快速路由参数

标签 express parameters routes

我正在尝试在我的 express 应用程序中创建两条路线。一条不带参数的路线会给我一个选择列表,另一 strip 参数的路线会给我与 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 接收吗?

最佳答案

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

关于快速路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704593/

相关文章:

java - 将参数传递给构造函数上的方法

iphone - 点符号 - 它需要参数吗?

algorithm - 在特定成本内找到路径

javascript - Next.js 中奇怪的命令式 onScroll 路由行为(仅在服务器上呈现)

javascript - 使用来自 Node/Express 请求的 JSON Web 服务?

node.js - 使用没有临时文件的 Node js将文件流式上传到rest文件服务器

javascript - mongoose 检查 id 是否存在,但该 id 嵌套在数组中

.net - 两种参数的用法有何区别?

node.js - Express.js 中间件执行上面定义的路由

php - Laravel 路由缓存