技术改变世界,前后协同变革 自动化 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

27260 次点击
所在节点    程序员
206 条回复
polebug
2019-05-29 18:20:37 +08:00
更适合一个前端撸全栈的项目吧 其余的不管大项目小项目 前端应该不想管数据库吧 (不妨做个调查

楼主挑战一般化开发模式 值得敬佩 但不一定被人接受
TommyLemon
2019-05-29 18:33:01 +08:00
@jc89898 文档很重要,花了很多时间去编写和修改的,不过源码也一直在更新哈
https://github.com/APIJSON/APIJSON/releases
TommyLemon
2019-05-29 18:37:45 +08:00
@Accat1024 对的,不过虽然支持 HTTP GET,但建议还是用 HTTP POST,
不需要编码 url encode 和转码 url decode,HTTP 传输性能和稳定性都更好。
你可以使用 "@explain":true,来查看每次请求自动生成的 SQL:

POST: http://apijson.cn:8080/get
```js
{
"[]": {
"join": "</User/id@", // Comment LEFT JOIN User ON User.id = Comment.userId
"Comment": {
"@column": "id,userId,content", // SELECT id,userId,content
"@order": "date-" // ORDER BY date DESC
},
"User": {
"@column": "id,name", // SELECT id,name
"id@": "/Comment/userId"
}
},
"@explain": true
}
```
返回 Response:
```js
{
"[]": [
{
"Comment": {
"@explain": {
"sql": "SELECT `Comment`.`id`,`Comment`.`userId`,`Comment`.`content`, `User`.`id`,`User`.`name` FROM `sys`.`Comment` AS `Comment` LEFT JOIN ( SELECT `id`,`name` FROM `sys`.`apijson_user` ) AS `User` ON `User`.`id` = `Comment`.`userId` ORDER BY `Comment`.`date` DESC LIMIT 2 OFFSET 0",
"list": [
{
"id": 1,
"select_type": "SIMPLE",
"table": "Comment",
"type": "ALL",
"rows": 476,
"filtered": 100,
"Extra": "Using filesort"
},
{
"id": 1,
"select_type": "SIMPLE",
"table": "apijson_user",
"type": "eq_ref",
"possible_keys": "PRIMARY",
"key": "PRIMARY",
"key_len": "8",
"ref": "sys.Comment.userId",
"rows": 1,
"filtered": 100
}
]
},
"id": 1559125514580,
"userId": 82001,
"content": "测试新增评论"
},
"User": {
"@explain": {
"sql": "SELECT `id`,`name` FROM `sys`.`apijson_user` WHERE ( (`id` = 82001) ) LIMIT 1 OFFSET 0",
"list": [
{
"id": 1,
"select_type": "SIMPLE",
"table": "apijson_user",
"type": "const",
"possible_keys": "PRIMARY",
"key": "PRIMARY",
"key_len": "8",
"ref": "const",
"rows": 1,
"filtered": 100
}
]
},
"id": 82001,
"name": "测试账号"
}
},
{
"Comment": {
"id": 1559056772210,
"userId": 82001,
"content": "测试新增评论"
},
"User": {
"@explain": {
"sql": "SELECT `id`,`name` FROM `sys`.`apijson_user` WHERE ( (`id` = 82001) ) LIMIT 1 OFFSET 0",
"list": [
{
"id": 1,
"select_type": "SIMPLE",
"table": "apijson_user",
"type": "const",
"possible_keys": "PRIMARY",
"key": "PRIMARY",
"key_len": "8",
"ref": "const",
"rows": 1,
"filtered": 100
}
]
},
"id": 82001,
"name": "测试账号"
}
}
],
"code": 200,
"msg": "success",
"sql:generate/cache/execute/maxExecute": "7/3/4/200",
"depth:count/max": "3/5",
"time:start/duration/end": "1559126202459/3/1559126202462"
}
```
TommyLemon
2019-05-29 18:39:15 +08:00
@TommyLemon 评论自动删除缩进(每行前面的空格)也是醉了,可以复制粘贴 请求 JSON 到
APIJSONAuto 自动化接口管理平台来测试
apijson.org
TommyLemon
2019-05-29 18:46:11 +08:00
@polebug

不需要前端管数据库的哦,那是后端的事情。后端把数据库建好,配置好 APIJSON 的数据库连接给前端调用。
至于如何请求,后端把 URL 和请求 JSON 放到 APIJSONAuto 接口工具上传(提供源码可以部署到内网),
前端就能在共享的测试用例列表里浏览和使用了。

这种方式确实是在跳转传统的 RESTful 等开发方式,很多人不理解、不支持,但我还是一路坚持下来了。


目前已经有多家企业在使用中,其中不乏营收过亿的企业(传音 2018 年 226 亿)和 融资上千万的企业(社保科技)
https://github.com/APIJSON/APIJSON
jk1030
2019-05-29 18:47:57 +08:00
也就简单项目能用下 对于领域对象有点要求的项目或者是分布式项目就是自杀吧 那么重的耦合度,除非是写了跑路别人维护
peyppicp
2019-05-29 19:01:28 +08:00
我有一个问题,如果我前端需要展示一个敏感的数据需要部分隐藏,比如身份证号,这个用你的项目怎么实现?如果前端加密的话根本不安全。抓个包就完蛋了。
而且这种数据需要加密存储到数据库里,难道要在前端写秘钥吗?
yuankui
2019-05-29 19:23:06 +08:00
秒天秒地,秒空气~
allenhu
2019-05-29 19:51:38 +08:00
@TommyLemon 本来是要用来给前后端解耦的,这样一来,像 mask 某个字段(或者只有部分人能读取某个字段)这种很平常的场景,还是要后端来参与进来,那么,这个项目的意义是啥,造一个新轮子麻烦前后端双方?
polebug
2019-05-29 19:52:43 +08:00
@TommyLemon 我觉得你的想法是好的 但是现在这个项目刚起来 发帖介绍以及 github 不应该放过多的所谓的荣誉来证明这个项目有多好 应该多听听程序员们的想法 这样才能帮助项目变好不是吗
skadi
2019-05-29 21:53:08 +08:00
老哥又是你,我起码见了四五次呢.
xiongbiao
2019-05-29 22:01:10 +08:00
害怕
agee
2019-05-29 22:22:38 +08:00
这个项目看到过好多次,其中还有几次是 v 友推荐的,从推荐场景来说都还是挺不错的,但是作者一出来推广马上就有一种华为公关部的感觉,说真的,如果真的为项目好,不能一直负向宣传啊。虽然还没有用但是看理念还是可以的,如果能用好,个人小项目的话能节省不少时间,但是大项目就本身就不会为在这方面节省时间或者图方便而去使用这种框架,更多的考虑是系统化工业化。这估计这也是 v2 上的大老看不上的原因,这些都是很正常的啊,心态不平如何能静下来好好写代码呢。
agee
2019-05-29 22:27:46 +08:00
开源也应该多少对自己目标用户有个定位,从作者的宣传来看,明显对于目标用户定位是错的,给人带来太多反感。
zander1024
2019-05-29 23:33:59 +08:00
block ,病毒营销
Bramblex2
2019-05-29 23:49:10 +08:00
项目是好项目……

但是这个营销路子太野了,有一种 q 群大神的感觉。
carlclone
2019-05-30 08:12:40 +08:00
像培训班出来的,哈哈
murmur
2019-05-30 08:21:41 +08:00
@1cming 我认为只要项目正规,测试覆盖完全,bug 修复即时,宣传一下也挺好的
总靠着洋人的信仰选模块不行
当年 vue 的作者还不是下知乎跟人对杠
murmur
2019-05-30 08:22:44 +08:00
@agee v2 大佬连现在连 react native 都看不上了,windows 更是人间之屑,所以你在乎什么?
leonme
2019-05-30 08:25:04 +08:00
看到大家这么喷我就放心了,哪有开源项目这么推广的

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

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

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

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

© 2021 V2EX