背景我决定将 Strapi 部署为我的项目的无头 CMS/后端,并且对开箱即用的轻松设置非常满意。但是,我的项目的一部分需要通过简单的表单捕获用户输入,我认为通过编写自定义插件和利用相同的后端来扩展Stati的REST API是可行的方法,而不是使用自己的数据库启动另一个快速服务器。我能够找到有关生成插件的文档,并且我对不同插件文件的文件结构和逻辑(模型,控制器,策略,配置,路由等)的工作原理有很好的理解。但是,对于我的生活,我无法找到最基本的资源或任何关于如何编写逻辑的足够文档,允许我的控制器挂接到Steati为我的自定义集合创建的基本CRUD方法(在我的情况下是“消息”)。到目前为止,我做了什么生成插件表带生成:插件通讯录在插件\联系人表单\config\routes.json.创建了一个路由,在允许从“管理”面板进行公共访问后,我已成功对其进行了测试/postMessage { "routes": [ { "method": "POST", "path": "/postMessage", "handler": "contact-form.postMessage" } ] }在插件\接触形式\模型中。我创建了一个空的模型文件&包含我的模型“消息”的定义,它定义了一个colationType集合名称“消息”及其字段,如下所示:Message.jsMessage.settings.json { "kind": "collectionType", "connection": "default", "info": { "name": "message", "description": "This represents the Message Model" }, "attributes": { "name": { "default": "", "type": "string", "required": true }, "email": { "default": "", "type": "email", "required": true }, "message": { "default": "", "type": "text", "required": true } } }在开发服务器重新启动后,Strapi已经识别出我的插件,并在其数据库中反映了“消息”模型,我可以从管理面板中正确看到该集合。我需要什么帮助我想做的是扩展插件的REST API端点,以提供与 Strapi 在创建新集合/实体时构建的开箱即用端点相同的功能,同时为其添加自定义业务逻辑层。我很感激任何人向我指出一个示例或资源,该示例或资源显示了Stati向插件公开的方法或函数,这些插件可以挂钩或调用以实现此目的。
1 回答
开心每一天1111
TA贡献1836条经验 获得超13个赞
上述可以通过利用内置的 Strapi 暴露的方法来实现。通过检查堆栈如何通过自动生成 API 端点处理创建操作,我能够将 确定 为此功能的相应模块。但是,在将插件的模型名称传递给 时,服务无法找到 。因此,我检查了服务的源代码,发现它接受模型 UID。因此,在自定义插件的情况下,我们需要传递格式化为这样的插件,而不是仅仅传递:entityService
entityService
strapi.entityService.create({data} , {model: 'modelName')
modelName
modelName
modelUID
plugins::plugin-name.modelName
总之,对于针对我的问题中的示例的创建操作,它将是这样的:
const result = await strapi.entityService.create( { data: ctx.request.body }, { model: "plugins::contact-form.message" } )
Strapi支持的所有其他CRUD操作也由实体服务公开,并且可以以类似的方式访问(创建,更新,查找,查找等)。您可以在 Strapi 文档>概念>控制器>核心控制器中找到所有这些方法。
我还制作了一个YouTube视频,介绍了它是如何工作的:https://www.youtube.com/watch?v=kIZHzbmnhnU
添加回答
举报
0/150
提交
取消