如何在 FeathersJS 中实现自定义/复杂的操作路线
How to implement custom / complex operation routes in FeathersJS
我需要在 FeathersJS 应用程序上实现一组执行非常自定义/复杂操作的路由。
其中一条路线是 /Category/disableExclusiveContentsOf/:id
。它 运行 是针对六个数据库表的查询,以查找与类别 :id
专门相关的行。我绝对不能使用 FeathersJS 提供的查询抽象来做到这一点。然后,它使用 FeathersJS' "local" API 更新我找到的行,以便向客户端触发数据更新事件。
但是,如果我单独使用 Express 实现路由,Feathers 身份验证/授权挂钩将不会 运行,因此端点不会受到保护,这是一项要求。
如何在 FeathersJS 应用程序中容纳此类内容?
您仍然可以使用 your own service and use the :id
as route parameter 实现路由:
app.use('/Category/disableExclusiveContentsOf/:id', {
find() {
// do complex stuff here
}
});
我建议更改的一件事是 URL 似乎是行动而非资源导向。这意味着有人可以使用 GET 请求更改您的应用程序数据,这通常被认为不是一个好的做法(例如,在某些情况下,Google 爬虫进来了 deleted/changed 一堆东西)。
Feathers 鼓励您考虑资源而不是自定义路线和操作。在您的情况下,您将拥有一个 ExclusiveContents
服务,您可以 POST
到:
app.use('/Category/ExclusiveContents/:categoryId', {
create(data, params) {
// do complex stuff here
params.categoryId // the id of the category
data // -> additional data from the POST request
}
});
我需要在 FeathersJS 应用程序上实现一组执行非常自定义/复杂操作的路由。
其中一条路线是 /Category/disableExclusiveContentsOf/:id
。它 运行 是针对六个数据库表的查询,以查找与类别 :id
专门相关的行。我绝对不能使用 FeathersJS 提供的查询抽象来做到这一点。然后,它使用 FeathersJS' "local" API 更新我找到的行,以便向客户端触发数据更新事件。
但是,如果我单独使用 Express 实现路由,Feathers 身份验证/授权挂钩将不会 运行,因此端点不会受到保护,这是一项要求。
如何在 FeathersJS 应用程序中容纳此类内容?
您仍然可以使用 your own service and use the :id
as route parameter 实现路由:
app.use('/Category/disableExclusiveContentsOf/:id', {
find() {
// do complex stuff here
}
});
我建议更改的一件事是 URL 似乎是行动而非资源导向。这意味着有人可以使用 GET 请求更改您的应用程序数据,这通常被认为不是一个好的做法(例如,在某些情况下,Google 爬虫进来了 deleted/changed 一堆东西)。
Feathers 鼓励您考虑资源而不是自定义路线和操作。在您的情况下,您将拥有一个 ExclusiveContents
服务,您可以 POST
到:
app.use('/Category/ExclusiveContents/:categoryId', {
create(data, params) {
// do complex stuff here
params.categoryId // the id of the category
data // -> additional data from the POST request
}
});