我正在尝试在我的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吗?
基本上,您声明的路线是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) });