快速路线参数

人气:586 发布:2022-10-16 标签: parameters routes express

问题描述

我正在尝试在我的Express应用程序中创建两条路线。一条不带参数的路径将为我提供一个选项列表,另一条带参数的路径将为我提供与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路线。如果我去掉没有参数的那个,它给出的是404so。谁能解释一下为什么/api/CHOICE/?ID=1没有被/api/CHOICE/:ID选取?

推荐答案

基本上,您声明的路由记录在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)
});

269