【问题标题】:What's the purpose of using ":" before a name in the path of a URL?在 URL 路径中的名称前使用“:”的目的是什么?
【发布时间】:2015-11-14 17:02:27
【问题描述】:

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

我一直在使用 express.js,并且我看到 URL 的处理程序具有诸如

之类的路径
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 是一个整数,但这实际上并不是绝对必要的,它可以是其他任何东西(例如字符串)。

我对在 URL 路径中的名称前使用 : 的原因的猜测只是为了表达,而不是 :id:name,我们可以传递任何我们想要的任何类型。 :id:name 被视为变量。这个猜测正确吗?

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

【问题讨论】:

    标签: javascript node.js express routing


    【解决方案1】:

    : 只是将命名变量指示为 URL 的该部分中的占位符。没有它,id 将在 url 中逐字匹配,不会被解释为动态占位符。仅此而已。

    【讨论】:

      【解决方案2】:

      你是对的。

      : 只是用来设置路由。它可能是!@ 或其他任何东西。它在路由中声明了一个变量。

      在您的代码中:

      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 是一个匹配路由集的变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        • 2013-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-16
        • 2011-08-25
        相关资源
        最近更新 更多