我在以下结构上有2条路线:
router.get( '/人/:ID')
router.get( '/人/朋友')
请求: GET / person / 1 正由第一条路线按我编写的顺序处理。
这个顺序:
router.get( '/人/:ID')
router.get( '/人/朋友')
将转到'/ person /:id
而这一个:
router.get( '/人/朋友')
router.get( '/人/:ID')
将转到'/ person / friends'
我使用params的格式错了吗?不是:id 意味着它需要一个变量,而/ friends期望相同的字符串是“朋友”吗?
答案 0 :(得分:2)
您可以使用正则表达式来过滤路径,例如
app.get("^/person/:id([0-9]{1,6})", function(req, res, next){
console.log('/person/:id endpoint hit: id: ' + req.params.id);
res.end('OK');
});
app.get("/person/friends", function(req, res, next){
console.log('/person/friends endpoint hit');
res.end('OK');
});
这意味着任何请求,例如:http://localhost:3000/person/42将转到:/ id处理程序,而像http://localhost:3000/person/friends这样的请求将转到/ friends处理程序。您可以根据需要更改正则表达式,我假设ID为1到6位数字。
您可以通过执行以下操作来允许任何数量的数字更加宽松:
app.get("^/person/:id([0-9]+)", function(req, res, next){
console.log('/person/:id endpoint hit: id: ' + req.params.id);
res.end('OK');
});
如果您没有指定正则表达式模式,请求/个人/朋友将匹配/ person /:id处理程序,您将在日志中获取此信息:
/person/:id endpoint hit: id: friends