当前位置:  开发笔记 > 前端 > 正文

快速路线参数

如何解决《快速路线参数》经验,为你挑选了1个好方法。

我正在尝试在我的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)的路由。如何确保路由器不忽略该参数?

提前致谢。

UPDATE 似乎它不会触发/ api / choice /:id路由。如果我删除不带参数的那个,它会给出404。有人可以向我解释为什么/ api / choice /:id无法获取/ api / choice /?id = 1吗?



1> vorillaz..:

基本上,您声明的路线是Express文档中的文档。

第二条声明的路由由URL解析,例如/api/choice/hello将“ 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!
  var queryStuff = JSON.stringify(req.query);
  console.log(queryStuff)
});

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有