APIJSON Versions Save

🏆 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构。 🏆 A JSON Transmission Protocol and an ORM Library 🚀 provides APIs and Docs without writing any code.

4.6.7

3 years ago

AbstractSQLExecutor 优化增删改未成功也未抛异常的 code 和 msg; AbstractParser 优化请求及响应的日志打印; AbstractSQLConfig 优化 key$ 的格式校验; 错误码只在最外层返回,逻辑统一,感谢腾讯 CSIG 的同事 fineday009 贡献代码 [#202];

文档:

生态项目 新增 APIJSON 的字段插件,支持 字段名映射 和 !key 反选字段; 贡献者列表 新增 腾讯后台工程师 fineday009;

4.6.6

3 years ago

SQL 函数白名单新增 length; key$ 模糊搜索不允许连续的 %; AbstractSQLExecutor 新增 getKey 方法; 新增待实现关键词 @null; 删除 Structure.java, Operation 中 NECESSARY, DISALLOW 等已废弃的部分代码;

4.6.5

3 years ago

调用 SQL 函数只允许用后端已配置的,避免 sleep(10) 这种命令函数导致数据库异常或耗时很久; 加强对 JOIN 相关键值对的校验,避免通过特殊符号进行 SQL 注入; 加强对命名的校验,避免用纯数字等非字母开头的表名/字段名导致 SQLException;

新增 整合 APIJSON 和微服务框架 light-4j 的 Demo(同时接入了 Redis); 新增用户发的文章 全国行政区划数据抓取与处理; 删除已废弃的 Test 类的相关代码;

4.6.1

3 years ago

解决对 Response 校验只对最外层生效; 移除已废弃的 StructureUtil 和 Test 的相关代码;

4.6.0

3 years ago

解决 bug

解决 "toId%": "0,10" 等连续范围报错 value 类型不合法; 解决 "id{}@": "[]/Moment/praiseUserIdList" 等引用赋值的值有时类型为 List 时报错 ArrayList cannot be cast to JSONArray; 解决 "key<>": "a" 这种包含字符串的格式报错 Data truncation: Invalid JSON text,原来必须里面再用 "" 包装一次,JSON 中还得转义,现在简化成直接写即可;

增强安全

对 MySQL 的 DELETE 和 UPDATE 强制加 LIMIT,限制一次操作记录的数量;

提升性能

通过缓存及复用数组主表 ObjectParser 来大幅提升大量数据的数组内主表的查询性能; 通过减少不必要的 newSQLConfig 及 getSQL 等步骤来大幅提升大量数据的数组内主表的查询性能;

对比 4.5.2 在 Log.DEBUG = true(开启日志)的情况下

TestRecord[] 耗时降低至原来 24%,性能提升 300% 至原来 4 倍; Moment[] 耗时降低至原来 33%,性能提升 200% 至原来 3 倍; 朋友圈列表耗时降低至原来 77%,性能提升 23% 至原来 1.2 倍。 其中每个数组都按 100 条来测试,如果每页数量更大或每项数据量更大,则提升会更加明显。

腾讯 CSIG 某项目线上生产环境实测 Log.DEBUG = false 时 2.3KW 大表(由两张等量拆分表组成)查询

LIMIT 100 相比原来从 2s 降到 164ms 提升 11 倍; LIMIT 1000 相比原来从 30s 降到 197ms 提升 151 倍; LIMIT 10000(一次 /get 到 1W 条记录) 整个网络请求耗时仅 633ms; LIMIT 1000000(带条件一次 /get 到 12W+ 条记录共 72.5M 数据,CURL 下载速度 20M/s) 整个网络请求仅 5.624s,实际服务执行仅 2s。

兼容性

这个版本重构了几个方法:

1.Parser.createObjectParser
Parser createObjectParser(JSONObject request, String parentPath, String name, SQLConfig arrayConfig, boolean isSubquery) throws Exception;

删除 1 个参数 String name 新增 2 个参数 boolean isTable, boolean isArrayMainTable 后为

Parser createObjectParser(JSONObject request, String parentPath, SQLConfig arrayConfig, boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception;

2.AbstractParser.createObjectParser
AbstractObjectParser createObjectParser(JSONObject request, String parentPath, String name, SQLConfig arrayConfig, boolean isSubquery) throws Exception

删除 1 个参数 String name 新增 2 个参数 boolean isTable, boolean isArrayMainTable 后为

AbstractObjectParser createObjectParser(JSONObject request, String parentPath, SQLConfig arrayConfig, boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception

3.ObjectParser.parse
ObjectParser parse() throws Exception;

新增 2 个参数 String name, boolean isReuse 后为

ObjectParser parse(String name, boolean isReuse) throws Exception;

4.AbstractObjectParser.parse
AbstractObjectParser parse() throws Exception;

新增 2 个参数 String name, boolean isReuse 后为

AbstractObjectParser parse(String name, boolean isReuse) throws Exception;

5.AbstractObjectParser 的构造方法
public AbstractObjectParser(@NotNull JSONObject request, String parentPath, String name, SQLConfig arrayConfig, boolean isSubquery) throws Exception

删除 1 个参数 String name 新增 2 个参数 boolean isTable, boolean isArrayMainTable 后为

public AbstractObjectParser(@NotNull JSONObject request, String parentPath, SQLConfig arrayConfig, boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception

具体见

https://github.com/Tencent/APIJSON/commit/a406242a81f2b303a1c55e6a4f5c3c835e62e53a

4.5.2

3 years ago

APIJSONORM

新增 javax.activation 依赖来兼容 JDK 11+,感谢 知乎 sunxiaoguang 的贡献 PR#194; 新增 APIJSON 接口调试实践 的链接,感谢腾讯同事贡献 Issue#189; 解决异常情况下未及时释放资源,感谢 奇安信代码卫士 的贡献 Issue#182-185; 解决某些情况下解析 引用赋值 出错,其它修复与优化,感谢  源伞科技 的贡献 Issue#48

优化全局默认参数的解析性能;

文档:

相关推荐新增 APIJSON 接口调试实践,感谢腾讯同事的贡献; 相关推荐新增用户发的博客 apijson简单使用,感谢 Grey Zeng; 贡献者们新增来自知乎的 sunxiaoguang,感谢贡献代码;

4.5.1

3 years ago

解决高并发情况下参数校验规则可能因为执行过程 remove 了部分操作关键词导致校验出错甚至出现安全漏洞 - 该问题由 APIJSON 4.4.5 优化 增删改 性能时 引入

4.5.0

3 years ago

优化代码,感谢 github-ganyu 的贡献 #190; 升级 fastjson 至 1.2.75,感谢 github-ganyu 的贡献 #190; 更新文档,新增贡献者昵称和头像;

apijson-framework 4.3.3-4.5.0 https://github.com/APIJSON/apijson-framework/releases

APIJSON-Demo 4.2.0-4.5.0 https://github.com/APIJSON/APIJSON-Demo/releases

4.4.8

3 years ago

注:只是为了解决 jitpack.io 打包后 maven 下载失败,实际上只是因为 maven 仓库同步延迟,之前打的 4.4.6 和 4.4.7 现在也能成功通过 maven 下载依赖包了

4.4.7

3 years ago