【问题标题】:How to override Strapi Admin panel endpoints?如何覆盖 Strapi 管理面板端点?
【发布时间】:2020-10-04 20:21:47
【问题描述】:

在管理面板中 - 我有一个内容类型 products,它显示了数据库 (MongoDB) 中的所有产品

假设我想编辑 product,当我点击 Save 按钮时,我想点击自定义 API/覆盖更新我的现有端点 products收藏!

是否可以自定义或覆盖管理面板 API?

【问题讨论】:

    标签: strapi headless-cms


    【解决方案1】:

    Strapi admin(strapi-admin) 和 Content manager(strapi-plugin-content-manager) 是分开定义的。

    如果您想覆盖/扩展端点;通过定义你想要覆盖的函数来做到这一点:

    将控制器定位在:

    extensions//controllers/.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//config/routes.json
    node_modules/strapi-plugin-content-manager/config/routes.json

    文档中的一些基本信息:controllerscustomization1 & customization2FAQ

    【讨论】:

    • 嗨,您好像在谈论创建新内容类型时生成的 API 端点。我有兴趣覆盖管理页面端点。通过管理页面更新内容类型时命中的端点:示例日志:[2020-06-17T08:00:33.185Z] debug PUT /content-manager/explorer/application::products.products/5e8cc069ca721f208dcd35b2 ( 68 毫秒) 200
    • 我一直在尝试扩展内容管理器插件几个小时,但无法弄清楚为什么没有应用任何更改。这与我在文件夹 strapi-plugin 前加上前缀有关 - 正如文档所说!谢谢
    【解决方案2】:

    只是为了补充 ghosh 的答案。您还必须复制 ContentManager.js 所依赖的依赖项以避免任何错误,如下所示:

    扩展/内容管理器/ └────控制器 | │ - ContentManager.js | └────验证/ | - index.js | - 模型配置.js | └──── 服务/ | └──── 工具/ | └──── 配置/ | - 属性.js │ └──── 工具/ - 解析-multipart.js

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2017-01-01
      • 2014-12-17
      • 2020-07-26
      • 1970-01-01
      • 2014-12-09
      相关资源
      最近更新 更多