Files
xuanzhi-service/server/.ai-specs/coding-specs/module-admin-crud-default.md
wdh-home 8164eec650
Some checks failed
CI / init (push) Has been cancelled
CI / Frontend node 18.16.0 (push) Has been cancelled
CI / Backend go (1.22) (push) Has been cancelled
CI / devops-test (1.22, 18.16.0) (push) Has been cancelled
CI / release-pr (push) Has been cancelled
CI / release-please (push) Has been cancelled
CI / devops-prod (1.22, 18.x) (push) Has been cancelled
CI / docker (push) Has been cancelled
服务端
2026-04-22 15:49:50 +08:00

3.8 KiB

业务 admin 端默认 CRUD 接口规范

适用范围

  • 新增业务模块的 admin 端管理接口时,使用本文。
  • 判断某个业务模块默认应该提供哪些后台 CRUD 接口时,使用本文。
  • 业务模块没有明确说明“只读”“无详情”“禁止批量删除”等例外时,默认按本文落地。

默认接口基线

  • 默认 CRUD = 创建单删批量删除更新详情分页列表 6 个接口。
  • 完整路径 = <router-prefix>/<abbreviation>/...;如果 router-prefix 为空,则完整路径不带额外前缀。禁止把 /api 写死为项目事实。
  • admin 接口默认挂 PrivateGroup,统一走后台 JWT + Casbin
  • 写操作默认挂 middleware.OperationRecord();读操作默认不挂操作审计。
动作 Method 默认路径 API 方法名 Service 方法名
创建 POST /<abbreviation>/create<StructName> Create<StructName> Create<StructName>
单删 DELETE /<abbreviation>/delete<StructName> Delete<StructName> Delete<StructName>
批量删除 DELETE /<abbreviation>/delete<StructName>ByIds Delete<StructName>ByIds Delete<StructName>ByIds
更新 PUT /<abbreviation>/update<StructName> Update<StructName> Update<StructName>
详情 GET /<abbreviation>/find<StructName> Find<StructName> Get<StructName>
分页列表 GET /<abbreviation>/get<StructName>List Get<StructName>List Get<StructName>InfoList

参数约定

  • CreateUpdate 默认使用 body 传实体或业务 request
  • Delete 默认用主键 query 参数删除;主键名必须和实体主键字段保持一致。
  • DeleteByIds 默认用主键数组 query 参数删除,格式统一为 <primaryField>s[]
  • Find 默认用主键 query 参数查询详情。
  • GetList 默认接收 model/<module>/request 下的搜索结构;普通列表返回分页结果,树形列表可不接分页参数,但接口名仍保持 get<StructName>List

强制规则

  • 新增业务 admin 模块时,如无明确例外,先提供这 6 个接口,再叠加业务特有接口。
  • 路由统一放在 router/<module>,接口统一放在 api/v1/<module>,业务统一放在 service/<module>,模型统一放在 model/<module>
  • 新增业务路由后,必须同步在 initialize/router_biz.go 注册。
  • 同一模块如果同时有 admin/app 两套接口,目录仍按业务模块落点,adminapp 必须分文件或分承载结构体,不能长期混写。
  • Swagger 注解里的 @Router@Security ApiKeyAuthMethod 必须和真实 router 挂载一致。

允许例外

  • 业务天然只读时,可以不做 CreateUpdateDeleteDeleteByIds,但必须在对应业务文档或接口文档中明确说明。
  • 业务明确禁止批量删除时,可以去掉 DeleteByIds,但 routerapiservice、前端调用、权限点必须同步移除,不能只删单层。
  • 树形实体的列表接口可以返回整棵树,不强制分页;但接口名仍保持 get<StructName>List,不要随意改成 treeallqueryList
  • 配置型场景如果本质不是独立业务实体,优先复用已有能力,例如 sys_params;不要为了凑 CRUD 强行建完整业务模块。

禁止事项

  • 禁止把默认 admin CRUD 直接挂到 PublicGroup
  • 禁止同一批后台 CRUD 同时出现 createXxxaddXxxsaveXxx 多套命名。
  • 禁止把列表接口随意命名成 pagelistquery,导致不同模块接口风格漂移。
  • 禁止只新增 API 或只新增 Router,不补齐 ServiceModel、注册入口。
  • 禁止因为有 app 端,就把 admin 端默认 CRUD 改落到 router/appapi/v1/app 这类顶层目录。