【发布时间】:2016-09-23 07:43:34
【问题描述】:
如何使用 Express Router 指定可选参数?这个resource 说在参数之后使用?。
基本上,我通常点击/posts 端点来获取所有帖子。但有时我需要添加type 过滤器并获取基于该类型的所有帖子。相反,路由将我的/posts/:id 读取为与/posts/:type 相同的动态路由,因此当我需要从/posts/:id 发出getOne 请求时,它永远不会命中,因为它会命中/:type 并且做一个常规的Posts.get。
这些是不同的路线,但Router 将它们视为相同。
反应前端:
getPosts(type) {
return http({
method: 'GET',
url: `${url}/${type}`,
data: data
});
}
NodeJS Express 路由器后端:
/* Posts CRUD */
router.route('/posts/:type?')
.get(Posts.get)
.post(Posts.post);
/* Post CRUD */
router.route('/posts/:id')
.get(Posts.getOne)
.put(Posts.put)
.delete(Posts.delete);
澄清:我需要带有:type 参数的路由来执行.get(Posts.get) 和带有:id 参数的路由来执行.get(Posts.getOne)
【问题讨论】:
-
如果您希望两者的初始路径相同,您需要限制与
:type路由匹配的内容,以便与:id路由匹配的内容不会匹配,而是传递给:id路线。正如您目前所拥有的,与:id路由匹配的所有内容也与:type路由匹配。见:stackoverflow.com/q/10858005/5812121
标签: javascript node.js express