如何在羽毛js中生成多级路径参数,如下所示:
api.com/category/catergoryId/subCatergory/subCatergoryId
答案 0 :(得分:2)
通常我们发现它们实际上并不需要,并且保持路线尽可能平坦要好得多。例如
users/:userId/posts
之类的东西 - 虽然很适合人类阅读 - 实际上并不像开箱即用的Feathers已经支持的等效/posts?userId=<userid>
那样容易解析和处理。另外,当通过没有路线概念的websocket连接使用Feathers时,这也会更好。但是,仍然可以通过在嵌套路由上注册现有服务并将route参数映射到查询参数来创建服务的嵌套路由,如下所示:
app.use('/posts', postService);
app.use('/users', userService);
// re-export the posts service on the /users/:userId/posts route
app.use('/users/:userId/posts', app.service('posts'));
// A hook that updates `data` with the route parameter
function mapUserIdToData(hook) {
if(hook.data && hook.params.userId) {
hook.data.userId = hook.params.userId;
}
}
// For the new route, map the `:userId` route parameter to the query in a hook
app.service('users/:userId/posts').hooks({
before: {
find(hook) {
hook.params.query.userId = hook.params.userId;
},
create: mapUserIdToData,
update: mapUserIdToData,
patch: mapUserIdToData
}
})
现在转到
/users/123/posts
会致电postService.find({ query: { userId: 123 } })
并返回该用户的所有帖子。