You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13:如何从动态路由访问全局API路由处理器?

解决Next.js动态路由下API路由全局可访问的问题

方法一:使用Next.js重写规则(推荐)

在next.config.js中配置重写规则,将任意路径前缀下的/api/create请求转发到根路径的API路由,无需复制代码:

/** @type {import('next').NextConfig} */
const nextConfig = {
  async rewrites() {
    return [
      {
        source: '/:path*/api/create',
        destination: '/api/create',
      },
    ];
  },
};

module.exports = nextConfig;
  • :path*会匹配任意层级的前缀路径(包括空路径),比如/dashboard/api/create、/foo/bar/api/create都会被转发到/api/create,由原/app/api/create/route.js处理。
  • 修改配置后重启开发服务器生效。

方法二:创建共享API处理函数

将API逻辑抽离为独立模块,在需要的路由文件中导入复用,避免代码重复:

  1. 新建共享处理文件lib/api-handlers/create.js,迁移原API逻辑:
// lib/api-handlers/create.js
export async function GET() {
  return new Response(JSON.stringify({ hello: "world" }), {
    headers: { "Content-Type": "application/json" },
  });
}

// 若有POST/PUT等其他请求方法,同步导出即可
  1. 在根路径API路由中导入:
// app/api/create/route.js
export { GET } from '@/lib/api-handlers/create';
  1. 在动态路由下的API路由中导入:
// app/[...slug]/api/create/route.js
export { GET } from '@/lib/api-handlers/create';

这样无论访问根路径还是任意动态路由下的/api/create,都会调用同一个处理函数,后续修改逻辑只需维护一处即可。

内容的提问来源于stack exchange,提问作者Rohit Handique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:10:07