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
2.1 KiB
2.1 KiB
同模块 admin/app 接口分层规范
适用范围
- 同一业务模块同时存在
admin管理端接口和app用户端接口时,使用本文。
强制规则
- 顶层目录一律按业务模块落点;禁止因为有
app端,就单独新建顶层router/app、api/v1/app、service/app、model/app来承载book、order、author这类业务。 - 同一业务模块的实体仍统一放在
model/<module>;只有接口入参、出参和流程按admin/app分开。 router/<module>、api/v1/<module>、service/<module>内,admin与app接口必须分文件或分承载结构体;禁止长期混写在同一个大文件里。- 可复用逻辑优先下沉到
service/<module>的公共方法;公共逻辑只抽业务共性,不要把admin/app的鉴权、返回、分页口径硬揉成一套。
推荐落点
- 推荐文件名:
<module>_admin.go、<module>_app.go、enter.go。 - 示例:
router/book/book_admin.gorouter/book/book_app.goapi/v1/book/book_admin.goapi/v1/book/book_app.goservice/book/book_admin.goservice/book/book_app.goservice/book/book_common.gomodel/book/book.gomodel/book/request/book_admin.gomodel/book/request/book_app.gomodel/book/response/book_admin.gomodel/book/response/book_app.go
路由与鉴权
admin接口默认挂业务 router 的PrivateGroup,走后台JWT + Casbin。app公开接口挂PublicGroup。app仅登录接口,基于PublicGroup单独加middleware.JWTAuth();不要直接挂PrivateGroup。- 如果
app用户体系不等于sys_users,禁止直接复用后台登录、claims、角色权限链路;必须单独实现用户端认证链路。
禁止事项
- 禁止把“同一业务模块的 app 端接口”误建成独立业务模块。
- 禁止为了省事,把所有
app接口都挂到PrivateGroup,再用后台角色权限去模拟用户端登录态。 - 禁止同一个业务实体在
model层拆出两套重复表结构,仅因接口面向admin/app不同。