接口(Resource)

12003

1. 在数据库resource表配置

rescource配置.png

2. 配置部分的说明

在Jianghu框架中接口可以直接手动通过项目数据库的_resource表进行配置:

字段 说明
accessControlTable 数据规则控制表
resourceHook 协议的前置和后置操作方法'](#hook)
pageId 接口的一级名称
actionId 接口的二级名称,结合一级名称可以快速定位接口
desc 协议的描述说明
resourceType 协议类型; sql: 处理简单的crud操作; service:手动创建相关service处理复杂的逻辑;
appDataSchema appData 参数数据结构的校验
resourceData 协议的具体实现配置
requestDemo Demo仅供开发者参考使用
responseDemo Demo仅供开发者参考使用
operation 操作; softInsert softUpdate softDelete select

3. resourceHook

执行_ resource 表 resourceData 里面的操作前或后前置和后置service方法,能够在数据库操作之前或之后执行Service。

3.1 参考用例

  1. { "before": [{ "service": "service文件名", "serviceFunction": "service方法名" }], "after": [{ "service": "service文件名", "serviceFunction": "service方法名" }] }
  • before:在sql执行之前,框架中间件httpResourceHook.js 会读取并运行service方法
  • after:在sql执行之后,框架中间件httpResourceHook.js 会读取并运行service方法

3.2 实现逻辑

  1. if (beforeHooks) {
  2. for (const beforeHook of beforeHooks) {
  3. const { service, serviceFunction } = beforeHook;
  4. checkServiceFunction(service, serviceFunction);
  5. await ctx.service[service][serviceFunction](ctx.request.body.appData.actionData, ctx);
  6. }
  7. }
  8. if (afterHooks) {
  9. for (const afterHook of afterHooks) {
  10. const { service, serviceFunction } = afterHook;
  11. checkServiceFunction(service, serviceFunction);
  12. await ctx.service[service][serviceFunction](ctx.request.body.appData.actionData, ctx);
  13. }
  14. }