基于 go + goframe 实现的 apijson
暂仍处于前期开发探索中, 请仅使用在 个人探索项目
创建后 执行 demo/todo/todo/tests 下的 *_test.go 访问测试
-
单表查询、单表数组查询
-
双表一对一关联查询、数组关联查询
-
双表一对多关联查询、数组关联查询
-
@column, @order, @group, page, count
-
单表单条新增
-
单表单条修改
-
单表单条、批量删除
-
Request表的tag校验
- MUST
- REFUSE
-
分页返回total@
-
可用的权限方案
- get只有access中定义的才能访问
- 非get操作则必须与request指定一致才可请求
- 基于角色控制
-
远程函数
-
错误提示
-
查询节点 自定义查询数据
- 根据json构造节点树, 并检查节点结构(不符合直接返回)
- parse 节点树内容, 并分析关联关系(不要求json的key顺序, 因为go的原生map不支持顺序遍历)
- 从依赖关系中逐步fetch数据
- 构造响应数据
[]
下只能有一个主查询表 (不依赖于列表中其他表)- 由于是应用内拼接结果处理1+n的问题, 当前以下写法total并不能获取到[]下单个节点的Todo[]的total值,也不能对Todo[]分页,所以勿使用于拔出萝卜带出泥的场景
{
"[]":{
"User":{
},
"Todo[]":{
"user_id@":"/User/user_id"
},
"total@":"/Todo[]/total"
}
}
- get 操作只能访问access中定义的表
- 其他操作需和request中定义的结构一致方可访问
- access 中定义各操作的角色权限, 角色有: 未登录用户/登录用户(OWNER/ADMIN/ 其他自定义角色)
- 提供自定义函数 针对不同表不同角色添加 过滤条件
- access_ext 中定义各操作的in/out字段列表, 限制各操作字段只能是此处的子集
- go >= 1.18
- 创建mysql数据库
- 导入demo/todo/todo/todo.sql文件
- demo/todo/config.yaml.example 改成 demo/todo/config.yaml, 然后修改配置文件 config.yaml 中数据库连接
- 在demo/todo目录运行go run main.go
- 查看测试 demo/todo/todo/tests