我创建了一个books
包含书籍的内容类型。馆藏中的每一本书都属于一个用户(由Strapi提供的用户内容类型)。
我想返回/users/me/books
端点上经过身份验证的用户拥有的书籍的列表。在哪里可以添加此路由和处理程序,因为存在/api/books
包含与路由,控制器等相关的书籍的目录,但没有/api/users
目录。
您可以使用扩展系统来扩展或覆盖。
extensions/users-permissions/controllers
只需将要扩展或覆盖的控制器添加为.js文件,如下所示:
因此,要覆盖下面的me
端点,User.js
只需再次定义该方法:
'use strict';
module.exports = {
//Override me
async me(ctx) {
//do your thing
}
};
扩展而不是覆盖意味着添加另一个端点,因此您需要定义它,添加路由并为其设置权限。route.js文件应在以下位置创建:
extensions/users-permissions/config/routes.json
像这样:
{
"routes": [
{
"method": "GET",
"path": "/users/me/books",
"handler": "User.getUserBooks",
"config": {
"policies": [],
"prefix": "",
"description": "description",
"tag": {
"plugin": "users-permissions",
"name": "User",
"actionType": "find"
}
}
}
}
这次控制器(与开始位置相同):
module.exports = {
async getUserBooks(ctx) {
//add logic
}
}
OP已正确添加:
添加自定义路由和控制器后,必须进入管理面板(以admin身份登录)>“角色和权限”>“用户权限”。在这里,您可以找到新添加的路由,并且必须通过检查将其启用。
原稿(如果需要示例)位于:
/node_modules/strapi-plugin-users-permissions/config/routes.json
/node_modules/strapi-plugin-users-permissions/controllers/User.js
我不认为您应该扩展User控制器,因为这在逻辑上是不正确的。您正在尝试获取图书-您应该以相同的方式扩展book api。据我所知aContentType
不包含有关其创建者的信息(如果不正确,欢迎教育我)。因此,为了解决该问题,您可以将与ContentType
的关系添加到“书”中User
。然后,我认为您应该使用一个终结点扩展books api,该终结点使用ctx
接收到的内容将“所属”图书返回给该用户。
另外-看看这个问题
如果您需要更多信息,请发表评论。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句