在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-*),然后批量排除:
- 新建Node.js API文件时统一命名,比如
pages/api/node-newNodeRoute.js,对应路由/api/node-newNodeRoute - 修改
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
相关产品推荐
相关产品推荐

