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

如何让Express所有路由自动以/api为前缀而无需显式定义

Express 统一路由 /api 前缀实现方案

有两种常用的实现方式,可根据实际场景选择:

方法1:使用 Express 内置 Router 挂载前缀(官方推荐)

这是Express生态的标准写法,通过子路由实例统一挂载前缀,路由层级清晰,便于后续扩展维护:

const express = require('express');
const app = express();
// 实例化子路由,所有业务路由都定义在这个子路由上
const apiRouter = express.Router();

// 路由定义不需要加/api前缀,直接写相对路径即可
apiRouter.get('/endpoint-A', (req, res) => {
   return res.send('A');
});
apiRouter.get('/endpoint-B', (req, res) => {
   return res.send('B');
});

// 把子路由整体挂载到 /api 前缀下
app.use('/api', apiRouter);

该方案支持多模块分组设置不同前缀,没有额外兼容性问题,优先推荐使用

方法2:全局中间件修改请求路径(仅适用于旧代码兼容场景)

如果不想改动现有路由的定义逻辑,可以通过全局中间件批量给请求路径拼接/api前缀:

const express = require('express');
const app = express();

// 全局中间件统一处理路径前缀
app.use((req, res, next) => {
  // 避免重复拼接前缀
  if (!req.path.startsWith('/api')) {
    req.url = `/api${req.url}`;
  }
  next();
});

// 路由定义完全不需要改动
app.get('/endpoint-A', (req, res) => {
   return res.send('A');
});
app.get('/endpoint-B', (req, res) => {
   return res.send('B');
});

该方案属于hack实现,可能和静态资源服务、第三方中间件产生路径冲突,非必要不建议使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:39:05