如何为用户添加自定义路由
How to add custom route for user
我创建了一个包含书籍的 books
内容类型。集合中的每本书都属于一个用户(Strapi 提供的用户内容类型)。
我想 return 已验证用户在 /users/me/books
端点拥有的图书列表。我在哪里可以添加此路由和处理程序,因为 /api/books
目录包含与书籍相关的路由、控制器等,但不包含 /api/users
目录。
您可以使用扩展系统扩展或覆盖。
extensions/users-permissions/controllers
只需将要扩展或覆盖的控制器添加为 .js 文件,如下所示:
所以要覆盖 User.js
下的 me
端点,您只需要再次定义方法:
'use strict';
module.exports = {
//Override me
async me(ctx) {
//do your thing
}
};
扩展而不是覆盖,意味着添加另一个端点,因此您需要定义它,添加路由并为其设置权限。 routes.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 正确添加:
After adding custom route and controller, one has to go to Admin Panel(log in as admin)>Roles and Permission> Users-Permission. There you can find the newly added route and have to enable it by checking it.
原件(如果您需要示例)位于:
/node_modules/strapi-plugin-users-permissions/config/routes.json
/node_modules/strapi-plugin-users-permissions/controllers/User.js
我认为您不应该扩展用户控制器,因为它在逻辑上不正确。您正在尝试获取书籍 - 您应该以相同的方式扩展书籍 api。
据我所知,ContentType
不包含有关其创建者的信息(如果这不是真的,欢迎您来教育我)。
因此,为了解决这个问题,您可以在 ContentType
“书籍”中添加与 User
的关系。
然后,我认为您应该使用 returns 书籍“属于”该用户的端点扩展书籍 api 使用收到的 ctx
。
还有 -
如果您需要更多信息,请发表评论。
我创建了一个包含书籍的 books
内容类型。集合中的每本书都属于一个用户(Strapi 提供的用户内容类型)。
我想 return 已验证用户在 /users/me/books
端点拥有的图书列表。我在哪里可以添加此路由和处理程序,因为 /api/books
目录包含与书籍相关的路由、控制器等,但不包含 /api/users
目录。
您可以使用扩展系统扩展或覆盖。
extensions/users-permissions/controllers
只需将要扩展或覆盖的控制器添加为 .js 文件,如下所示:
所以要覆盖 User.js
下的 me
端点,您只需要再次定义方法:
'use strict';
module.exports = {
//Override me
async me(ctx) {
//do your thing
}
};
扩展而不是覆盖,意味着添加另一个端点,因此您需要定义它,添加路由并为其设置权限。 routes.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 正确添加:
After adding custom route and controller, one has to go to Admin Panel(log in as admin)>Roles and Permission> Users-Permission. There you can find the newly added route and have to enable it by checking it.
原件(如果您需要示例)位于:
/node_modules/strapi-plugin-users-permissions/config/routes.json
/node_modules/strapi-plugin-users-permissions/controllers/User.js
我认为您不应该扩展用户控制器,因为它在逻辑上不正确。您正在尝试获取书籍 - 您应该以相同的方式扩展书籍 api。
据我所知,ContentType
不包含有关其创建者的信息(如果这不是真的,欢迎您来教育我)。
因此,为了解决这个问题,您可以在 ContentType
“书籍”中添加与 User
的关系。
然后,我认为您应该使用 returns 书籍“属于”该用户的端点扩展书籍 api 使用收到的 ctx
。
还有 -
如果您需要更多信息,请发表评论。