APIJSON

🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构 🏆 Real-Time coding-free, powerful and secure ORM 🚀 providing APIs and Docs without coding by Backend, and the returned JSON of API can be customized by Frontend(Client) users

OTHER License

Stars
17.2K
Committers
77

Bot releases are visible (Hide)

APIJSON - 新增 >,<,>=,<= 比较运算;完善APIJSONFinal

Published by TommyLemon over 5 years ago

Sever:
APIJSONORM 新增 >,<,>=,<= 比较运算;
APIJSONFinal 新增启动时的自检;

APIJSONFinal 解决自动化 API 的入口方法和 APIJSON 操作方法对应错误;

APIJSONORM 优化生成 SQL 语句的格式,比较运算符前后加空格;
APIJSONBoot 和 APIJSONFinal 完善启动说明;

打包 apijson-server3.4.5.jar;

文档:
新增子查询等功能说明;

Server:
新增JFinal版Demo,名叫APIJSONFinal;
新增URL,BOOLEAN[],STRING[],NUMBER[],DECIMAL[],URL[]类型校验,原有的类型名全改为大写;
Parser新增getMaxQueryPage限制最大分页页码;
AbstractSQLExecutor新增getValue方法支持子类扩展处理value;
DemoSQLExecutor新增支持Blob和Clob类型数据的处理,感谢 @Zerounary 的贡献;

解决 < LEFT JOIN和 > RIGH JOIN 丢主表条件;
解决有 @ APP JOIN 会丢前面 JOIN 的条件;
解决=,IN等只能是1个字段的子查询嵌套JOIN会因为超过一个字段报错;

子查询range的all和any全改为大写的ALL和ANY;
加强对数组关键词query,count,page的校验;
APIJSONLibrary重命名为APIJSONORM;
APIJSONDemo重命名为APIJSONBoot;

打包apijson-server3.4.1.jar;

MySQL:
新增 apijson_all_mysql.sql,整合多张表为一个 sql 文件,可一键导入,感谢 @linbren 的贡献。

Server:
新增支持 =, IN, FROM 3种类型的子查询 "key@":{ "range": "any", "from": "Table", "Table":{} };
新增支持EXISTS "key}{@":{ "range": "all", "from": "Table", "Table":{} };
新增支持数组默认count,可重写 Parser.getDefaultQueryCount 来自定义;

executeSQL.executeSQL内抽取出onVerifyRole;ObjectParser.executeSQL内抽取出setSQLConfig;

打包 apijson-server3.3.0.jar;
更新 English Document;

MySQL:
更新表;

不兼容的改动:
AbstractParser.onArrayParse 因为 705 行的默认 count 会导致在原来不传 count 但返回结果数 >getDefaultQueryCount() 的情况下,返回的结果只有 getDefaultQueryCount() 个。
https://github.com/TommyLemon/APIJSON/blob/5c989a24618aa2b2ad0964f0c2c58e65b27a2a59/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractParser.java

以下解决方法任选一种即可
1.重写 getDefaultQueryCount 并 return getMaxQueryCount();
2.修改 Parser.DEFAULT_QUERY_COUNT = MAX_QUERY_COUNT;
3.对应的 /get 新增 APIJSON 版本号,例如 /apijson/3.3/get (也可以在 Request Header 或 JSON 参数内 传过来版本号),最后判断版本号按照以上步骤 1 来兼容旧版;

Server:
新增详细的图文使用文档,感谢 @Zerounary 的贡献。

连续范围 key%:[] 由 [1,2] 改为 ['1,2', '3,4'...];
Operation新增UPDATE替代PUT避免和RequestMethod.PUT混淆;
远程函数DemoFunction构造方法新增RequestMethod支持函数对方法的限制;

Demo 支持自定义端口号;
login接口支持记住登录7天;
解决login接口在数据库异常时返回结果缺少必要信息;

DemoSQLConfig 新增 TiDB 的使用说明;
优化启动时校验远程函数前查数据的异常处理;
远程函数DemoFunction实例创建从ObjectParser移到Parser,减少不必要的内存占用;
删除Verifier.removeAccessInfo;

打包 apijson-server3.2.5.jar;

MySQL:
更新表;

APIJSON - 新增应用层连表 APP JOIN,例如 "join":"@/User/id@"

Published by TommyLemon almost 6 years ago

Server:
新增应用层连表 APP JOIN,例如 "join":"@/User/id@",支持跨不同类型数据库,缓存粒度更细更容易命中;

减少AbstractSQLExecutor.execute因为viceColumnStart起始值错误导致的多余一次缓存;

打包 apijson-server3.2.0.jar;

APIJSON - 更新MySQL表;解决Demo工程错误

Published by TommyLemon almost 6 years ago

Server:
新增漏提交的方法 value;

解决 DemoVerifier.getVisitorId 类型转换错误;

优化 AbstractVerifier 和 DemoVerifier 的代码;

打包 apijson-server3.1.7.jar;

MySQL:
更新表;

APIJSON - [Demo有错误]新增支持 String 类型的id;更新 Android 工程

Published by TommyLemon almost 6 years ago

Server:
新增支持 String 类型的id;
新增支持自定义 post 插入数据的 id,可为 Long 或 String 类型;
新增支持 String 类型的 visitorId 来校验权限;

Android:
新增一键清除编译缓存的Windows批处理文件;

解决登录接口变化导致解析问题;
解决用 Android Studio 3.x 直接打包的 Debug APK 不能手动或通过 ADB 命令安装;

同步并优化 APIJSONLibrary 的代码;

APIJSON - 新增访问权限表Access;Structure支持~校验正则

Published by TommyLemon almost 6 years ago

Server:
新增访问权限表Access;
Structure支持~校验正则;

所有非自动化API都格式化Response;
format格式化Response仅在成功时才生效;
优化JSONResponse格式化key的处理,formatArrayKey和formatObjectKey都去前缀@;
完善及优化JSONResponse代码;

打包apijson-server3.1.5.jar;

MySQL:
新增访问权限Access表;

APIJSON - 【安全】解决自动化校验 UNIQUE 失效

Published by TommyLemon almost 6 years ago

Server:
解决自动化校验 UNIQUE 失效

Server:
POST操作默认为OWNER角色且自动添加userId;
新增支持Between key%;
正则表达式符号新增支持~,且支持*忽略大小写;
Java Demo新增删除动态下所有评论的远程函数;
等价条件 key:value 不允许 JSONArray 类型;
PUT 请求在没有 SET 语句时直接报错;

解决 key! 报错;

优化key:value不合法的提示;
优化join解析异常的路径提示;
优化设置tag的提示;

MySQL:
更新表;

APIJSON - 新增Function;join兼容PostgreSQL;优化远程函数;修复bug及其它优化

Published by TommyLemon almost 6 years ago

Server:
新增Function,启动时自检;
join不再强制副表传@column;
join兼容PostgreSQL;
解决join在主表为空对象时未解析为JOIN语句;
解决server.JSONRequest未转换数组为JSONArray导致后面解析出错;
Schema,Table,column都加引号解决Order等关键词作为表名出错;
优化Admin角色的处理;
优化远程函数;
删除多余的FunctionList;

打包apijson-server3.0.0.jar;

MySQL:
更新表

Server:
自动化JOIN新增支持CROSS JOIN;
Parser新增getMaxQueryCount和getMaxUpdateCount,可重写来定制最大查询与增删改数量;

解决自动化LEFT,RIGHT JOIN不能用query:1,2查total;
解决多个JOIN的WHERE条件拼接错误;
DemoParser内parseCorrectRequest(JSONObject)抽象到AbstractParser;

打包 apijson-server2.9.3.jar;

Oracle版Demo:
解决以jar包形式运行时找不到“application.yml”文件的问题;

MySQL:
更新sql文件;

其它:
更新文档;
更新issue模板;

APIJSON - 新增 format: Boolean,后端将 key[] 转为 keyList 返回

Published by TommyLemon about 6 years ago

Server:
新增 format: Boolean,可将[]等有特殊字符的key转为list等常规的key,方便前端解析;
新增支持登录时传全局默认 格式化[]等特殊字符的配置 format:Boolean;

APIJSON - 新增支持 Oracle 数据库

Published by TommyLemon about 6 years ago

Server:
新增可连接 Oracle 数据库的 APIJSONDemo_oracle 工程;
APIJSONDemo_oracle 额外支持 String 类型的 id;
APIJSONDemo_oracle 额外支持 在 application.yml 里配置数据库;

新增 Oracle 的测试表,目录名为 Oracle;

APIJSON - 新增支持 PostgreSQL 数据库

Published by TommyLemon about 6 years ago

Server:
新增支持PostgreSQL数据库;
新增@database指定数据库类型,支持跨MySQL,PostgreSQL等多种数据库查询,可设置全局默认值;

新增PostgreSQL的测试表,目录名为PostgreSQL;
table目录重命名为MySQL;

更新相关文档;

APIJSON - 预编译模式下@having和@column支持SQL函数

Published by TommyLemon about 6 years ago

Server:
预编译模式下支持@having:"function0(arg0,arg1,...)?value0;function1(arg0,arg1,...)?value1...";
预编译模式下@column支持SQL函数,例如 column0,column1:alias;function0(arg0,arg1,...);function1(...):alias...

解决某些情况下JOIN中SQL语句的外层column不包括子表的;

APIJSON - 新增join,支持LEFT,RIGHT,INNER,FULL,OUTTER

Published by TommyLemon about 6 years ago

新增join,支持LEFT,RIGHT,INNER,FULL,OUTTER:
"<" - LEFT
">" - RIGHT
"&" - INNER
"|" - FULL
"!" - OUTTER
仅适用于GET请求。
示例:
"[]": { "join": "&/User/id@,</Comment/momentId@" }

APIJSON - 远程函数支持校验session及新增函数

Published by TommyLemon over 6 years ago

Server:
远程函数支持校验session;
远程函数新增verifyIdList和verifyURLList;
远程函数新增deleteChildComment来彻底删除评论的子评论及子评论的子评论;

更新table;

Server:
远程函数key():function(...)新增优先级key-() > key() > key+();
AbstractSQLExecutor新增onPutColumn和onPutTable,在DemoSQLExecutor重写可实现控制不返回某张表的某个字段等功能;

解决DemoFunction.isContain在array的值里面的元素类型和value的值的类型不同时return false,导致isContain((JSONArray) [82001,...], (Long) 82001) == false及类似问题;

优化Function执行后的报错;

打包apijson-server2.6.0.jar;

Server:
解决 @ combine:"userId,..." 或 @ combine:"userId{},..." 绕过权限校验;
GETS和HEADS请求也不允许传 @ combine ,避免可能绕过Request表里的规则校验;

优化 @ combine 报错信息;

Badges
Extracted from project README
Stargazers over time
Related Projects