如何覆盖 Strapi 管理面板端点?
How to override Strapi Admin panel endpoints?
在管理面板中 - 我有一个 content-type products
,它显示了数据库中的所有产品 (MongoDB)
假设我想编辑一个 product
并且当我点击 Save
按钮时,我想点击自定义 API/ 覆盖更新我的现有端点
products
collection!
是否可以自定义或覆盖管理面板 API?
Update(v4):从评论来看 - 这个答案现在已经过时了,因为 v4.
Strapi管理器(strapi-admin)和内容管理器(strapi-plugin-content-manager)是分开定义的。
如果您想 override/extend 端点;通过像这样定义你想要覆盖的函数来做到这一点:
控制器位于:
extensions/<plugin-name>/controllers/<controller-to-override-name>.js
示例:
extensions/content-manager/controllers/ContentManager.js
请注意名称中的“strapi-plugin”部分被删除了!
如何在控制器文件中覆盖和扩展的示例:
'use strict';
module.exports = {
//this is how you destroy count
async count(ctx) {
ctx.body = {
count: 99
};
},
//this is how you extend
async aFuncThatDoesntExistInOriginalController(ctx) {
//add logic
},
};
如果要扩展,则必须添加从路由到控制器和方法的映射
要查看哪个端点映射到控制器中的哪个方法,请查看:
node_modules/<plugin-name>/config/routes.json
node_modules/strapi-plugin-content-manager/config/routes.json
文档中的一些基本信息:controllers, customization1 & customization2 and FAQ
只是为了补充一下 ghosh 的回答。您还必须复制 ContentManager.js
所依赖的依赖项以避免任何错误,如下所示:
extensions/content-manager/
└─── controllers
| │ - ContentManager.js
| └─── validation/
| - index.js
| - model-configuration.js
|
└─── services/
| └─── utils/
| └─── configuration/
| - attributes.js
│
└─── utils/
- parse-multipart.js
在管理面板中 - 我有一个 content-type products
,它显示了数据库中的所有产品 (MongoDB)
假设我想编辑一个 product
并且当我点击 Save
按钮时,我想点击自定义 API/ 覆盖更新我的现有端点
products
collection!
是否可以自定义或覆盖管理面板 API?
Update(v4):从评论来看 - 这个答案现在已经过时了,因为 v4.
Strapi管理器(strapi-admin)和内容管理器(strapi-plugin-content-manager)是分开定义的。
如果您想 override/extend 端点;通过像这样定义你想要覆盖的函数来做到这一点:
控制器位于:
extensions/<plugin-name>/controllers/<controller-to-override-name>.js
示例:
extensions/content-manager/controllers/ContentManager.js
请注意名称中的“strapi-plugin”部分被删除了!
如何在控制器文件中覆盖和扩展的示例:
'use strict';
module.exports = {
//this is how you destroy count
async count(ctx) {
ctx.body = {
count: 99
};
},
//this is how you extend
async aFuncThatDoesntExistInOriginalController(ctx) {
//add logic
},
};
如果要扩展,则必须添加从路由到控制器和方法的映射
要查看哪个端点映射到控制器中的哪个方法,请查看:
node_modules/<plugin-name>/config/routes.json
node_modules/strapi-plugin-content-manager/config/routes.json
文档中的一些基本信息:controllers, customization1 & customization2 and FAQ
只是为了补充一下 ghosh 的回答。您还必须复制 ContentManager.js
所依赖的依赖项以避免任何错误,如下所示:
extensions/content-manager/ └─── controllers | │ - ContentManager.js | └─── validation/ | - index.js | - model-configuration.js | └─── services/ | └─── utils/ | └─── configuration/ | - attributes.js │ └─── utils/ - parse-multipart.js