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
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