gpt4 book ai didi

node.js - 带参数的快速路由,后跟不带参数的路由

转载 作者:太空宇宙 更新时间:2023-11-03 23:21:30 28 4
gpt4 key购买 nike

我有以下结构的 2 条路线:

router.get('/person/:id')

router.get('/person/friends')

请求:GET/person/1 正在由第一条路由按照我编写的顺序进行处理。

此订单:

router.get('/person/:id')

router.get('/person/friends')

将转到'/person/:id

而这个:

router.get('/person/friends')

router.get('/person/:id')

将前往'/person/friends'

我使用的参数格式是否错误? :id 不是意味着它需要一个变量,而/friends 需要相同的字符串“friends”吗?

最佳答案

为此目的,您可以使用正则表达式来过滤路径,例如

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/friends 将与/person/:id 处理程序匹配,您将在日志中看到以下内容:

/person/:id endpoint hit: id: friends

关于node.js - 带参数的快速路由,后跟不带参数的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49177271/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com