技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%

2019-05-29 09:33:59 +08:00
 TommyLemon

APIJSON 3.5.0-3.5.7 更新内容:

具体见 Release 发布版本

APIJSON 简介

APIJSON 是一种为 API 而生的 JSON 网络传输协议。
简单的增删改查、复杂的查询、简单的事务操作 提供了完全自动化的 API。
能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。
适合中小型前后端分离的项目,尤其是互联网创业项目企业自用项目

多表关联查询、结构自由组合、多个测试账号、一键共享测试用例

自动生成封装请求 JSON 的 Android 与 iOS 代码、一键下载自动生成的 JavaBean

自动保存请求记录、自动生成接口文档,可添加常用请求、快捷查看一键恢复

一键自动接口回归测试,不需要写任何代码(注解、注释等全都不要)

第三方机构对 APIJSON 的代码扫描,测试结果可靠性高达 99.85%

APIJSON 用 SpringBoot 提供了自动化 API,

自动将前端传的 JSON 参数转为 SQL 语句执行并返回结果,

期间自动校验权限、结构、内容,自动防 SQL 注入,

提供自动化的各种 JOIN(INNER, LEFT, RIGHT 等),

还支持多字段排序 order by,多字段分组 group by,聚合函数 having

等几乎所有 MySQL,PostgreSQL,Oracle 的常规功能。

通过自动化 API,前端可以定制任何数据、任何结构!

大部分 HTTP 请求后端再也不用写接口了,更不用写文档了!

前端再也不用和后端沟通接口或文档问题了!再也不会被文档各种错误坑了!

后端再也不用为了兼容旧接口写新版接口和文档了!再也不会被前端随时随地没完没了地烦了!

在线解析

对于前端

对于后端

🏆码云最有价值开源项目 🚀后端接口和文档自动化,前端(客户端) 定制返回 JSON 的数据和结构!

创作不易,GitHub 右上角点 ⭐Star 支持下吧,谢谢^_^

https://github.com/APIJSON/APIJSON

27278 次点击
所在节点    程序员
206 条回复
ianva
2019-05-30 10:42:07 +08:00
都 GraphQL 的年代了做这个
tt67wq
2019-05-30 10:49:51 +08:00
有没有被注入的风险?
glfpes
2019-05-30 11:02:13 +08:00
老实说,现在看到面试者提到 github 的 star 等数据,已经不作为参考了。
glfpes
2019-05-30 11:03:09 +08:00
@glfpes 权重低于给知名开源项目贡献 code。
TommyLemon
2019-05-30 11:40:49 +08:00
@jk1030 传统 RESTful 等方式照样耦合,APIJSON 这方面反而更有优势,见 #10 楼回答
https://www.v2ex.com/t/568631?p=1#r_7398843
murmur
2019-05-30 11:44:51 +08:00
@ianva react 的年代,类 react 的框架一大把数都数不过来
TommyLemon
2019-05-30 11:49:29 +08:00
@yixiang @KickAssTonight @peyppicp @tt67wq
APIJSON 提供自动化权限管理、自动化数据和结构校验、自动限流防止过载、自动防 SQL 注入
https://github.com/APIJSON/APIJSON/issues/14

关于字段级访问控制见这个 issue
https://github.com/APIJSON/APIJSON/issues/31
wangyongbo
2019-05-30 11:50:13 +08:00
虽然我不用 java, 但是我还是表示支持。 某些场景 很合适。
TommyLemon
2019-05-30 11:50:45 +08:00
@ianva 是有些类似,很多人没搞清楚总是说“比你的 APIJSON 强”,“完爆 APIJSON ”之类的。
事实上 Facebook 的 GraphQL 是 Gateway,而 APIJSON 是 ORM,有着本质上的区别,
真要放一般的互联网项目开发中拿来对比,那就是 APIJSON “完爆” GraphQL 了。
https://juejin.im/post/5ae80edd51882567277433cf
TommyLemon
2019-05-30 11:52:56 +08:00
@wangyongbo
Node, Python, PHP, Java, C#, Go 语言的 APIJSON 后端库,
Android, iOS, JavaScript(原生+Vue) 的前端 Demo 都有的
https://github.com/TommyLemon/APIJSON
TommyLemon
2019-05-30 12:14:13 +08:00
@wangxiaoaer
1 )项目文档差
你去找找 5 - 7K Star 的项目对比下,有提供这么全的 Demo,
这么详细的注释、这么严谨详细的文档、多个视频教程、强大易用的在线测试工具
的 Java 项目,发出来看看有几个。


2 )摆不正自己的位置
不管是项目主页,这篇帖子,还是评论里的回复,都不知道说了多少遍了:
APIJSON 是一种为 API 而生的 JSON 网络传输协议。
为 简单的增删改查、复杂的查询、简单的事务操作 提供了完全自动化的 API。
能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。
适合中小型前后端分离的项目,尤其是互联网创业项目和企业自用项目。

应用场景还不够清楚?什么叫摆不正自己的位置?

3 )推广手段
GitHub 马太效应,不推广,会死。
Star,issue,群里提问,第三方的博客 本身就是对 APIJSON 的不同形式的认可。
TommyLemon
2019-05-30 12:16:04 +08:00
@skadi 圈子就这么点大,见到几次不是很正常?其它人一两周发一次帖推广的你都没印象?我一个月一次就不特殊对待了?
TommyLemon
2019-05-30 12:17:44 +08:00
@Ehco1996 默认每次请求都有自带的内存 cache,可重写 putCache,removeCache 方法自定义 Redis 等实现
TommyLemon
2019-05-30 12:23:30 +08:00
@guoyang APIJSON 核心是一个 ORM 库,建表、维护表(索引等)不属于它的范围。
APIJSON 字段限制(可选)、查询缓存、查询预判、索引前置 等做了多方面性能优化
https://github.com/APIJSON/APIJSON/issues/16/

上亿记录的表,就不要指望 ORM 在复杂查询下能帮你自动优化得很好了,
可以做分表分库(可配合用 MyCat,ShardingJDBC 等中间件),或者用 TiDB 等分布式数据库
TommyLemon
2019-05-30 12:25:56 +08:00
@guoyang “根据查询语句自己去创建对应的索引”
建议使用 APIJSON 的 性能分析 @explain,或者看 APIJSONORM 控制台日志,查看生成的 SQL,
还可以使用小米的 soar 来自动分析,它会给出一些加索引、去除隐式转换 等优化建议
TommyLemon
2019-05-30 12:27:18 +08:00
@gccdchen 感谢在 文档、引入 等优化的反馈和建议
TommyLemon
2019-05-30 12:28:49 +08:00
@LemonCoo1
“楼主这项目可是完爆 hibernate 的哟 滑稽”
请给出证据谢谢,我从来没说过 “ APIJSON 完爆 hibernate ” 之类的话
TommyLemon
2019-05-30 12:33:32 +08:00
@hlwjia “整天挂在嘴边”?
“技术改变世界,前后协同变革” 是我在公司内开分享会时的一个 Slogan,
最上面的图片是分享会的 PPT 主题页,还加了日期时间打印出了邀请函。
公司总经理还说标语很好,建议 “前后协同变革” 改为 “协同驱动变革”。
TommyLemon
2019-05-30 12:37:48 +08:00
@sxw11
Java 开发工程师用 Java 写的 ORM 库,你说是前端就是前端了? 哪里说了后端只有 CRUD ?
APIJSON 通过自动化 API 实现 [大部分] CRUD 的业务需求,
但还有部分需要特殊处理数据或结构的地方做不了自动化,
所以 APIJSON 提供了 [远程函数],后端可以在里面写代码自定义自己的业务逻辑。
https://github.com/TommyLemon/APIJSON/blob/master/Document.md#3.2

还有一小部分
很复杂的查询(一般对应报表之类的需求,各种 JOIN 和子查询 嵌套、字符串拼接 等,SQL 写一屏以上)、
复杂的事务操作(操作多表,还可能中间 CRUD 出现两种以上,各种校验、多次读写、事务回滚、定制异常等)
等用 APIJSON 做就很吃力了甚至不能实现,建议还是用手写接口(包括 SQL)的方式来实现。
还有后端也不止 CRUD,还有各种
报表统计、数据分析、个性化推荐、服务监控、数据库运维(如果没有 DBA 的话)
等工作,这些也不是 APIJSON 的适用范围或者说应用场景。
yinzhili
2019-05-30 12:52:32 +08:00
思路很不错。但是代码风格不像是长期做后端的程序员的习惯,有点随意。恐怕使用者会担忧可能存在的 bug 以及日后维护的难度。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568631

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX