express框架 路由中的冒号: 的含义

以下代码使用了express框架。

app.get('/books/:id',(req,res)=>{
    res.send('restful 传递参数'+req.params.id)
})

我一看到这个/book/:id就懵逼了,这是什么新型正则么。后面还有一个req.params,我知道req.query,因此我就更加懵逼了。

直接百度,根本没有结果,没办法,我只能去官网查看了。

在这里插入图片描述
还好官网还真的有写!

Route parameters are named URL segments that are used to capture the values specified at their position in the URL. The captured values are populated in the req.params object, with the name of the route parameter specified in the path as their respective keys.

谷歌翻译一下:路由参数是命名的 URL 段,用于捕获在 URL 中的位置指定的值。 捕获的值填充在 req.params 对象中,路径中指定的路由参数的名称作为它们各自的键。

举个例子:

路由: /users/:userId/books/:bookId
请求地址: http://localhost:3000/users/34/books/8989
返回的req.params: { "userId": "34", "bookId": "8989" }

总之,这个冒号就是用来匹配 restful形式的url传递的参数。

此外,在express中,.-(点和连字符)是按照字面意思解释的,因此他们可以和: 一起配合发挥很棒的作用。

比如

请求路由: /flights/:from-:to
请求的地址: http://localhost:3000/flights/beijing-shanghai
获得的参数req.params: { "from": "beijing", "to": "shanghai" }

请求路由: /name/:gender.:surname
请求地址: http://localhost:3000/name/Mr.Geller
req.params: { "gender": "Mr", "surname": "Geller" }

最后,为了更好地控制可以由路由参数匹配的确切字符串,还可以在括号 (()) 中附加一个正则表达式:

路由: /user/:userId(\d+)
请求地址: http://localhost:3000/user/42
req.params: {"userId": "42"}

ps:因为正则表达式通常是文字字符串的一部分,所以一定要使用额外的反斜杠对任何 \ 字符进行转义,例如 \d+。(+匹配前面的子表达式一次或多次)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值