这似乎是一个微不足道的问题,但我已经搜索了一段时间以获得具体的权威答案,但到目前为止还没有任何结果。
我一直在使用express.js,而且我一直在看网址'具有路径的处理程序,例如
app.get("/users/:id", function(req, res) {
res.send(req.params)
})
或
app.get("/users/:name/photos", function(req, res) {
res.send(req.params)
})
但在这些情况下,我并不完全确定在:
(或id
)之前使用name
的目的。
我知道,如果我在:
之前使用id
,则id
将作为req.params
的参数提供,即req.params.id
。通常id
是一个整数,但实际上并不是绝对必要的,它可以是其他任何东西(例如字符串)。
我猜测在网址路径中的名称前使用:
的原因只是为了表达而不是:id
或:name
,我们可以通过任何我们想要任何类型。 :id
或:name
被视为变量。这个猜测是否正确?
处理路由时使用:
的目的是什么?我们什么时候应该使用它?
答案 0 :(得分:5)
:
只是将一个命名变量指示为该网址部分中的占位符。没有它,id
将在URL中按字面匹配,并且不会被解释为动态占位符。这就是它的全部内容。
答案 1 :(得分:0)
你是对的。
:
仅用于设置路线。它可能是!
或@
或其他任何事情。它在路线中声明了一个变量。
在您的代码中:
app.get("/users/:id", function(req, res) {
res.send(req.params)
})
/users/:id
成为路线。这意味着users/
将被此处理程序捕获并在其中的id
变量中可用。它不必是整数。
下面:
app.get("/users/:name/photos", function(req, res) {
res.send(req.params)
})
路由的定义如下:
/users/john/photos/
在这种情况下,john
是一个与路径集匹配的变量。