使用"的目的是什么:"在URL的路径中的名称之前?

时间:2015-11-14 17:02:28

标签: javascript node.js express routing

这似乎是一个微不足道的问题,但我已经搜索了一段时间以获得具体的权威答案,但到目前为止还没有任何结果。

我一直在使用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被视为变量。这个猜测是否正确?

处理路由时使用:的目的是什么?我们什么时候应该使用它?

2 个答案:

答案 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是一个与路径集匹配的变量。