Ako 协议
Ako 协议是一组面向管理后台的 HTTP + JSON 约定。它不规定后端使用什么语言、Web 框架、数据库或认证方案,只规定前端需要什么数据。
资源模型
协议可以看成三个资源域:
| 资源域 | 作用 | 默认前端调用 |
|---|---|---|
auth | 告诉前端当前会话是否可用,以及登录入口。 | GET auth/isAuth、POST auth/login |
menu | 返回菜单分组和模型元数据。 | GET menu/list/{channel} |
model | 对某个模型执行分页、保存和删除。 | POST model/page/{model} 等 |
默认基地址是 /api/ako/,可通过前端 baseUrl 改变。下面是完整请求路径的概念视图:
{
"menus": [],
"models": [
{
"id": "Student",
"name": "学生",
"fields": [],
"modelButtons": [],
"operateButtons": []
}
]
}真实响应还会包含节点、字段展示信息和类型 options;字段定义见模型定义。
后端适配器要做什么
一个可用的适配器至少要完成以下工作:
- 从自己的模型定义或配置生成
models元数据。 - 将字段类型、选项和展示规则编码为协议 JSON。
- 解析分页、查询条件和排序,并对字段与操作符做白名单校验。
- 将
save和delete映射到领域服务或数据访问层。 - 在合适的边界执行认证、授权、事务和错误转换。
- 保持响应形状稳定,让前端不需要知道后端技术栈。
什么不属于协议
- 数据库表名、SQL、ORM Repository 接口。
- 用户、角色、Session 或 JWT 的具体实现。
- Web 框架的控制器注解与参数绑定语法。
- 领域校验、审计日志和业务流程的内部实现。
这些内容可以出现在后端适配器文档中,但不应写进协议本身。当前 ako-rain 页面的注解示例只是 JVM 适配器的一种写法。
响应风格
菜单和分页响应是前端直接消费的对象:
- 菜单响应需要
menus与models。 - 分页响应需要
total、entities与information。 save、delete当前只要求成功时返回 2xx;响应体可为空。- 自定义按钮请求由业务自己定义,但前端默认会读取
code和message,建议使用code: 0表示成功。