【问题标题】:Express routes parameters快速路由参数
【发布时间】:2016-04-14 18:17:12
【问题描述】:

我正在尝试在我的快递应用中创建两条路线。一条不带参数的路线会给我一个选择列表,另一条带参数的路线会给我与 id 相关的选择。

router.get('/api/choice', choice_controller.get_choices);
router.get('/api/choice/:id', choice_controller.get_choice);

当我转到 .../api/choice/?id=1 时,api 返回选项列表,因此遵循没有参数 (/api/choice) 的路线。如何确保路由器不遗漏参数?

提前致谢。

更新 似乎它不会触发 /api/choice/:id 路由。如果我删除没有参数的那个,它会给出 404 。有人可以向我解释为什么 /api/choice/?id=1 没有被 /api/choice/:id 接收吗?

【问题讨论】:

    标签: express parameters routes


    【解决方案1】:

    基本上,您声明的路线记录在Express documentation

    第二条路由由/api/choice/hello 之类的 URL 解析,其中 'hello' 映射到 req 对象对象中:

    router.get('/api/choice/:id', function (req, res) {
      console.log("choice id is " + req.params.id);
    });
    

    您实际尝试的是映射查询参数。

    /api/choice/?id=1 之类的 URL 由您提供的第一个路由器解析。 查询参数很容易映射到请求:

    router.get('/api/choice', function (req, res) {
      console.log('id: ' + req.query.id);
      //get the whole query as!
      const queryStuff = JSON.stringify(req.query);
      console.log(queryStuff)
    });
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 2019-10-17
      • 2022-01-15
      • 1970-01-01
      • 2020-02-27
      • 2018-09-10
      • 1970-01-01
      相关资源
      最近更新 更多