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

在Next.js Pages Router中同时使用Flask与Node.js API路由

解决方案

方法1:单独排除特定Node.js API路由

修改next.config.js中的重写规则,将Node.js路由的匹配规则放在最前面,让Next.js优先处理这些路由,再转发剩余的/api请求到Flask:

async rewrites() {
  return [
    // 优先处理Node.js API路由,不转发到Flask
    {
      source: '/api/newNodeRoute',
      destination: '/api/newNodeRoute',
    },
    // 剩余的/api请求转发到Flask
    {
      source: '/api/:path*',
      destination:
        process.env.NODE_ENV === 'development'
          ? 'http://127.0.0.1:8000/api/:path*'
          : '/api/',
    },
  ];
},

这种方式适合只有少量Node.js路由的场景,每个新增的Node路由都需要添加对应的排除规则。

方法2:批量匹配Node.js API路由

如果需要添加多个Node.js路由,可以给它们统一前缀(比如/api/node-*),然后批量排除:

  1. 新建Node.js API文件时统一命名,比如pages/api/node-newNodeRoute.js,对应路由/api/node-newNodeRoute
  2. 修改next.config.js的重写规则:
async rewrites() {
  return [
    // 所有/api/node-开头的路由都走Next.js自己的API
    {
      source: '/api/node-:path*',
      destination: '/api/node-:path*',
    },
    // 其他/api请求转发到Flask
    {
      source: '/api/:path*',
      destination:
        process.env.NODE_ENV === 'development'
          ? 'http://127.0.0.1:8000/api/:path*'
          : '/api/',
    },
  ];
},

关键注意点

  • Next.js的重写规则是按数组顺序匹配,优先级从上到下,所以必须把Node.js路由的规则放在Flask转发规则前面
  • 确保pages/api/newNodeRoute.js(或对应前缀的文件)存在,且符合Next.js Pages Router的API路由规范
  • 开发环境测试时,重启Next.js服务让重写规则生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:16:07