快递路线参数

时间:2016-01-10 10:56:25

标签: express parameters routes

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

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

当我去... / api / choice /?id = 1时,api返回选择列表,因此遵循没有param(/ api / choice)的路由。如何确保路由器不会省略参数?

提前致谢。

更新 它似乎没有触发/ api / choice /:id路由。如果我删除没有param的那个,它就会得到404。有人可以向我解释为什么/ api / choice /?id = 1没有得到/ api / choice /:id?

1 个答案:

答案 0 :(得分:3)

基本上,您声明的路线是Express documentation上的文件。

第二个声明的路由由/api/choice/hello之类的网址解析,其中'你好'被映射到req对象对象:

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

您实际尝试的是映射查询参数。 像/api/choice/?id=1这样的网址由您提供的第一个路由器解析。查询参数很容易根据请求映射:

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