如何为所有节点/快速路由添加前缀

Posted

技术标签:

【中文标题】如何为所有节点/快速路由添加前缀【英文标题】:How to add prefix to all node / express routes 【发布时间】:2018-04-14 00:17:58 【问题描述】:

有没有人知道一种配置 express 以在所有路由之前自动添加前缀的方法?例如,目前我有:

/

/route1

/route2

但是,我想添加一个前缀,例如:

/prefix/

/prefix/route1

/prefix/route2

现在我需要为我的所有路线手动定义prefix,但想要一种更自动化/可配置的方式。有人可以帮忙吗?

提前致谢!

【问题讨论】:

请参阅***.com/questions/4375554/…,但请注意哪些答案适用于旧版 Express。 【参考方案1】:

routes.js

module.exports = (app) => 
   app.post('/route', (req, res) => 
      res.status(status);
      res.send(data);
   ); 

   app.get('/route', (req, res) => 
      res.status(status);
      res.send(data);
   ); 

   return app; 
;

Server.js

const router = express.Router()
const routes = require('./routes')(router, );
app.use('/PREFIX_HERE', routes)

参考:https://expressjs.com/en/guide/using-middleware.html

【讨论】:

【参考方案2】:

您可以为此使用 express Router()。

您可以像使用 express 应用一样使用路由器。比如:

router.use(() => ); // General middleware
router.get('/route1', () => )
router.get('/route2', () => )
router.post('/route2', () => )

然后使用以下方法将路由器附加到您的快速应用程序:

app.use('/prefix', router);

https://expressjs.com/en/4x/api.html#router

【讨论】:

谢谢!这对我有用。然而,它搞砸了我的res.render('...html')(去我的路线现在只有一个空白屏幕)。你知道我是否需要重新配置我的静态文件的发送方式吗? @TrungTran 很难说没有错误消息。可能是您正在使用相对路径并将文件移动到不同的目录 通过这样做,它适用于两个 API。即,适用于/prefix/route1/route1。如何仅对/prefix/route1 进行限制? 如果我想给它们都添加相同的前缀怎么办?

以上是关于如何为所有节点/快速路由添加前缀的主要内容,如果未能解决你的问题,请参考以下文章

如何为laravel中的所有路由添加默认参数

如何为目录下的所有文件名添加前缀?

Slim (V3) 框架:为生成的链接添加前缀,但不为传入路由添加前缀

如何为 dosuserbundle 和 hwiauthbundle (ERR_TOO_MANY_REDIRECTS) 设置路由前缀

Automake:如何为编译器命令添加前缀

如何为格式列表输出添加前缀?