【问题标题】:Express router - :id?快速路由器 - :id?
【发布时间】:2021-11-22 17:52:28
【问题描述】:

真正简单的问题伙计们:我看到很多书籍/代码 sn-ps 在路由器中使用以下语法:

app.use('/todos/:id', function (req, res, next) {
  console.log('Request Type:', req.method);
  next();
});

我不确定如何解释这里的路线...它会路线'/todos/anything'吗?然后抓住'任何东西'并对待变量ID?我如何使用该变量?我确定这是一个快速的答案,我只是以前没有见过这种语法。

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    这是一个快速中间件。

    在这种情况下,是的,它会路由/todos/anything,然后req.params.id会被设置为'anything'

    【讨论】:

      【解决方案2】:

      在您的代码上,即用于快速框架中间件的代码中,如果您想使用该路由获取服务器代码中的任何 id,您将通过 req.params.id 获取该 id。

      app.use('/todos/:id', function (req, res, next) {
        console.log('Request Id:', req.params.id);
        next();
      });
      

      【讨论】:

        【解决方案3】:
        Route path: /student/:studentID/books/:bookId
        Request URL: http://localhost:xxxx/student/34/books/2424
        req.params: { "studentID": "34", "bookId": "2424" }
        
        app.get('/student/:studentID/books/:bookId', function (req, res) {
          res.send(req.params);
        });
        

        同样适用于您的代码:

        Route path: /todos/:id
        Request URL: http://localhost:xxxx/todos/36
        req.params: { "id": "36" }
        
        app.use('/todos/:id', function (req, res, next) {
          console.log('Request Id:', req.params.id);
          next();
        });
        

        【讨论】:

          【解决方案4】:

          是的,在您的示例中,您会将req.params.id 设置为“任何东西”

          【讨论】:

            【解决方案5】:

            聚会有点晚了,但你问题中的问号让我想到了一些尚未触及的事情。

            如果您的路线在 id 之后有一个问号,如下所示:'/todos/:id?',id 将是一个可选参数,这意味着如果 id 被省略(因此未定义),您可以执行 getAll()。

            【讨论】:

              猜你喜欢
              • 2017-02-26
              • 2018-09-27
              • 2018-03-04
              • 2015-09-07
              • 2021-10-24
              • 1970-01-01
              • 2015-06-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多