如何为所有节点/快速路由添加前缀
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
进行限制?
如果我想给它们都添加相同的前缀怎么办?以上是关于如何为所有节点/快速路由添加前缀的主要内容,如果未能解决你的问题,请参考以下文章
Slim (V3) 框架:为生成的链接添加前缀,但不为传入路由添加前缀
如何为 dosuserbundle 和 hwiauthbundle (ERR_TOO_MANY_REDIRECTS) 设置路由前缀