快速路由参数
Posted
技术标签:
【中文标题】快速路由参数【英文标题】: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 接收吗?
【问题讨论】:
【参考方案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)
);
【讨论】:
以上是关于快速路由参数的主要内容,如果未能解决你的问题,请参考以下文章