在expressjs中捕获复数路由

詹姆斯·德·索扎

在expressjs中,我使用如下所示的路由;

app.use('/game', require("./routes/game"));

在文件中 /routes/game.js

const express = require('express');  
var router = express.Router();

router.get("s", function (req, res, next) {
    res.send("GAME LIST");
})
router.get("/:gameurl", function (req, res, next) {
    res.send(`GAME: ${req.params.gameurl}`);
})

module.exports = router;

我想同时抓住这两个路线/games/game/wow
如何管理两条路线?

jfriend00

如果你想同时/games/game去你的路由器,而不是任何其他顶级的路径,则有多种方式来指定。您可以在文档中看到此处描述的内容例如,您可以使用正则表达式或传递多个字符串。在这种情况下,我将向您显示多个字符串:

 app.use(["/game", "/games"], require("./routes/game"));

对于路由路径,您可以传递单个字符串,路径模式(正则表达式的Express子集),正则表达式或包含这些任意组合的数组。

如果您想区分路由器/game/games路由器之间的区别,那么您将必须检查req.originalUrl一下是哪一个导致路由器进入路由器的,这在我看来似乎有损于第一个路由目的地点。

因此,将两个单独的顶层路径发送到同一路由器并在路由器内部以不同的方式路由它们并不是与Express配合的设计。就个人而言,我要么更改路径设计以免发生这种情况,要么使用两个路由器,因为这更适合路由器机制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章