Skip to content

【新】基于 Go + GoFrame 实现的 APIJSON,增删改查、权限校验等,本仓库为副本,请给原仓库右上角点亮 ⭐️ Star

License

Notifications You must be signed in to change notification settings

APIJSON/APIJSON-GoFrame

Repository files navigation

apijson-go [WIP]

基于 go + goframe 实现的 apijson

暂仍处于前期开发探索中, 请仅使用在 个人探索项目

快速体验

Open in Gitpod

创建后 执行cmd/test/test.http 或者 cmd/z_test.go 访问测试

功能实现

  • 单表查询、单表数组查询

  • 双表一对一关联查询、数组关联查询

  • 双表一对多关联查询、数组关联查询

  • @column, @order, @group, page, count

  • 单表单条新增

  • 单表单条修改

  • 单表单条、批量删除

  • Request表的tag校验

    • MUST
    • REFUSE
  • 分页返回total@

  • 可用的权限方案

    • get只有access中定义的才能访问
    • 非get操作则必须与request指定一致才可请求
    • 基于角色控制
  • 远程函数

  • 错误提示

  • 查询节点 自定义查询数据

查询实现

  1. 根据json构造节点树, 并检查节点结构(不符合直接返回)
  2. parse 节点树内容, 并分析关联关系(不要求json的key顺序, 因为go的原生map不支持顺序遍历)
  3. 从依赖关系中逐步fetch数据
  4. 构造响应数据

列表查询限制

  • []下只能有一个主查询表 (不依赖于列表中其他表)
  • 由于是应用内拼接结果处理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字段列表, 限制各操作字段只能是此处的子集

开发指南

  1. go >= 1.18
  2. 创建mysql数据库
  3. 导入cmd/test.sql文件
  4. 从cmd/config.yaml.example 改成 cmd/config.yaml, 然后修改配置文件cmd/config.yaml中数据库连接
  5. 在cmd目录运行go run main.go
  6. 查看测试 test.http / z_test.go

感谢

参考链接

  1. 详细的说明文档.md
  2. 最新规范文档
  3. todo demo doc
  4. 如何实现其它语言的APIJSON?

About

【新】基于 Go + GoFrame 实现的 APIJSON,增删改查、权限校验等,本仓库为副本,请给原仓库右上角点亮 ⭐️ Star

Resources

License

Stars

Watchers

Forks

Languages

  • Go 100.0%
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy