You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
How to make another APIJSON? / 如何实现其它语言的APIJSON? #38
Activity
TommyLemon commentedon Jun 20, 2018
建议步骤:
1.实现单表查询
转换为
ResultSet取第0条(总数最多1条),取出所有字段对应的值,封装为一个表对象返回:
替换原来的
2.实现数组查询
转换为
ResultSet取所有,封装为一个包含表对象的数组返回:
替换原来的
3.实现两张表 一对一 关联查询
先解析Comment,转换为
ResultSet取第0条(总数最多1条),取出所有字段对应的值,封装为一个Comment表对象返回:
然后解析User,解析到
时,从Comment中取出userId,把以上键值对改为
然后把User转换为
ResultSet取第0条(总数最多1条),取出所有字段对应的值,封装为一个User表对象返回:
4.实现两张表 一对多 关联查询
5.实现两张表在数组内 一对一 关联查询
其中
要根据Comment在数组中的位置index来动态变为
...
6.实现两张表在数组内 一对多 关联查询
实现了 1-6 后可以测试是否能通过这个用例(一对一、一对多、数组外、数组内、同层级、跨层级都有)

http://apijson.cn/api
POST http://apijson.cn:8080/get
{ "Moment": { "id": 32, "@column": "id,userId,praiseUserIdList" }, "User": { "id@": "Moment/userId", "@column": "id" }, "[]": { "Moment": { "userId{}@": "Moment/praiseUserIdList", "@column": "id,userId" }, "User": { "id@": "/Moment/userId", "@column": "id,name,head" }, "Comment[]": { "Comment": { "momentId@": "[]/Moment/id" } } } }7.实现SQL的 column, order by, group by等功能。
8.实现增、删、改
APIAuto 上有 200 左右测试用例,可以跑一遍看看哪些有问题
http://apijson.cn/api
管理员账号及密码 13000082001/123456

管理员账号及密码 13000088888/123456

测试数据 SQL 文件(MySQL, PostgreSQL, Oracle, SQL Server, DB2, ClickHouse 等)
https://github.com/APIJSON/APIJSON-Demo
完整功能见设计规范(核心的任意多表关联查询功能完成后可逐步完善其它功能)
https://github.com/Tencent/APIJSON/blob/master/Document.md#3
TommyLemon commentedon Jun 20, 2018
由于不限制嵌套层级和组合方式,所以必须用递归实现,从数据库查到结果(一开始可模拟测试数据,省去连接数据库的过程)后替换掉原来的内容再返回。
递归时由于不知道键值对key:value中的key和value,所以需要判断key和value的格式。
TommyLemon commentedon Jun 20, 2018
最简单的解析过程可以是:
1.Parser递归遍历 请求JSON,提取出每个 表对象JSON
2.Parser用 表对象JSON 封装SQLConfig,交给SQLExecutor
3.SQLExecutor用SQLConfig封装SQL语句,并连接数据库执行
4.SQLExecutor返回执行结果给Parser
5.Parser替换对应请求JSON中的对象
TommyLemon commentedon Jul 4, 2018
APIJSON-C# Server:
创作不易,给热心的作者右上角点 ⭐Star 支持下吧 ^_^
https://github.com/liaozb/APIJSON.NET
zeromake commentedon Aug 9, 2018
@TommyLemon
上回说的python初步完成了 https://github.com/zeromake/restful_model 刚刚把单元测试写好。
json 的表现层完全自定义,都是为了对应
sql。现在还是觉得权限管理不太给力,虽然用中间件模式,什么样的权限都做的了。
以及多表连接在想是提供一个 class 然后把多张表设置上去,url 和权限独立,还是像你的
APIJSON全局注册所有表随意连接任意表。我这个库就是一个
python库,然后不对任意一个 web 框架强绑定。现在写了
Sanic,Tornado的支持。后面有心情再考虑把 json 的表现层抽出来,做了
APIJSON的 json 表现层。现在还有个问题就是
Date的格式化函数sqlite,mysql,pg每个都不一样,现在想要么都不用,全用python的格式..TommyLemon commentedon Aug 9, 2018
@zeromake 赞,已Star。
不过URL里不要加user等符号哦,应该放到请求JSON里面,方便传任意表名
...
还能自由组合
不知道User.id的情况下可以通过 引用赋值 得到
参考上面的 建议步骤 和 设计规范
TommyLemon commentedon Aug 9, 2018
@zeromake 你改好后我就在APIJSON主页加上这个项目的链接哈,和 C#版 一样
https://github.com/TommyLemon/APIJSON
zeromake commentedon Aug 9, 2018
@TommyLemon 我这个只是为了做基础控件的,对应某个表操作,全局可连接任意表的应当后面做一个单独的控制 view,全部由使用的人来选择是注册一个全局 url 进行控制,还是挂几个表view。后面都会做对应的包括单表和 APIJSON 的相同的全局可连接任意表。
TommyLemon commentedon Aug 9, 2018
@zeromake 这样啊,非常期待,记得通知我哦,有问题欢迎找我交流
zeromake commentedon Aug 10, 2018
@TommyLemon
issues交流比较麻烦,base64解密防搜索引擎
加我 wx:
YWZseTM5MA==;或者qq:MzkwNzIwMDQ2TommyLemon commentedon Aug 10, 2018
@zeromake 可以
TommyLemon commentedon Sep 27, 2018
APIJSON Node.js 版,基于 typeorm ,使用 TypeScript 实现。
创作不易,给热心的作者右上角点 ⭐Star 支持下吧 ^_^
https://github.com/TEsTsLA/apijson
yuu2lee4 commentedon Sep 27, 2018
已赞 @TommyLemon
TommyLemon commentedon Oct 22, 2018
已经有热心的开发者实现了 PHP 版的 APIJSON 🎉
创作不易,给作者点 ⭐Star 支持下吧^_^
https://github.com/orchie/apijson
5 remaining items
TommyLemon commentedon Mar 30, 2019
@never615
另一个 PHP 版 APIJSON,看起来功能比原来那个多不少,可以试试,点 Star 支持下吧^_^
https://github.com/qq547057827/apijson-php
TommyLemon commentedon Jun 4, 2019
APIJSON Go 语言版 APIJSON
https://github.com/crazytaxi824/APIJSON
TommyLemon commentedon Feb 10, 2021
@never615 @SwankyTigerYY @y449329998 @ben1one
最近发现了一个新的 APIJSON PHP 版实现,代码和文档看起来比之前的都要完善一些,可以试试,能用的话就 Star 鼓励下作者~
https://github.com/xianglong111/json-api
TommyLemon commentedon Mar 13, 2022
注:getQuote 是获取引号,避免表名、字段名等和关键词冲突,例如 MySQL 用反引号 `name`,PostgreSQL, Oracle, SQLServer, DB2 都可以用双引号 "date"
glennliao commentedon Oct 27, 2022
新增一个go版本的
https://github.com/glennliao/apijson-go
[-]如何实现其它语言的APIJSON?[/-][+]如何实现其它语言的APIJSON?/How to make another APIJSON?[/+][-]如何实现其它语言的APIJSON?/How to make another APIJSON?[/-][+]如何实现其它语言的APIJSON?/ How to make another APIJSON?[/+][-]如何实现其它语言的APIJSON?/ How to make another APIJSON?[/-][+]How to make another APIJSON? / 如何实现其它语言的APIJSON?[/+]jimisun123 commentedon Aug 22, 2023
@TommyLemon 我想问一下,生成的SQL是有基于什么标准吗? 怎么才能做到生成的SQL兼容各种数据库?
TommyLemon commentedon Aug 22, 2023
@jimisun123
根据配置的数据库类型和版本适配,例如 Java 版是在 DemoSQLConfig 重新父类 AbstractSQLConfig 的方法 getDatabase, getDBVersion
优先 MySQL/PostgreSQL 等热门开源数据库的 SQL 语法和 JDBC/ODBC。
TommyLemon commentedon Jan 2, 2026
新增 Rust 版 APIJSON - 一个优雅、高性能的多数据源管理系统,支持 MySQL, PostgreSQL 的统一管理和操作
创作不易,右上角点亮 ⭐️ Star 支持下热心的作者吧 ^_^
https://gitee.com/APIJSON/panda-base