APIJSON 3.2.0 发布, 4K Star 与 Hibernate 拉开差距

2018-12-20 10:17:38 +08:00
 TommyLemon

https://www.timqian.com/star-history/#TommyLemon/APIJSON&hibernate/hibernate-orm

APIJSON 3.1.1-3.2.0 更新内容:

对于前端

对于后端


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


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


自动保存请求记录、自动生成接口文档


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

APIJSON 生态内项目:

新鲜出炉的 Python 版  APIJSON 除了基本的查询(分页、排序等),还实现了自动化的权限控制。

给热心的作者们点 Star 支持下吧 ^_^

项目主页(源码、文档、视频、生态 等)

https://github.com/TommyLemon/APIJSON

10398 次点击
所在节点    程序员
76 条回复
jimchen9999
2018-12-21 03:33:55 +08:00
c# 用你这玩意干啥啊 放着 EntityFramework 不用? EF 不知道牛逼多少
clino
2018-12-21 07:31:13 +08:00
@blless 他这个和 graphql 有些类似,主要想覆盖那些雷同重复的 CRUD 接口
TommyLemon
2018-12-21 09:52:59 +08:00
@br00k MongoDB 语法和 MySQL 差异太大了,暂时不打算支持哦,先专注于 MySQL,PostgreSQL,Oracle 等关系型数据库,最近新增了 TiDB 的支持。
https://github.com/TommyLemon/APIJSON/commit/d8583de029e79bf47586d96d99ba21305098ddb0
Terry05
2018-12-21 09:57:32 +08:00
支持,很不错的项目
somnus
2018-12-21 09:59:08 +08:00
一开始还以为是 swagger 的同类产品....深入理解发现原来是提供给前端自动生成 API....感觉用处不大.没想到是有什么人群在使用..
youyyz
2018-12-21 10:23:17 +08:00
之前看过这个但真的为什么前端的痛点要让后端来做大量的改造。而且就像前面楼上说的实际生成环境的业务场景并不是简单地增删改。安全性还不是要后端做大量配合、大量并发的时候怎么办、类似 dubbo 调用数据在另一个服务器的情况也让后端配合你们改造?不要总想着越界前端做前端的后端做后端的
q397064399
2018-12-21 10:29:47 +08:00
@Livid 麻烦移动到 推广节点
TommyLemon
2018-12-21 10:50:45 +08:00
@Terry05 感谢
TommyLemon
2018-12-21 10:51:01 +08:00
@diggerdu 感谢
zzzzzzZ
2018-12-21 11:29:16 +08:00
@somnus
应该是给那些不想看 DTO 文档的前端,去自己弄明白表结构和业务逻辑顺带帮后端把简单的 CRUD 做了的前端
建议普及,这样后端就不需要做那些很无聊的 CRUD 啦 hhhhhhh
果然开发圈子里总有人能找出很多奇奇怪怪的需求呢
TommyLemon
2018-12-21 11:34:54 +08:00
@blless 有关联的操作怎么就是强行放一个 API ?
你看下 微信好友详情界面,一个用户信息 + 最近发布的动态,按照传统 RESTful 方式,就是提供
GET /user?id=1
GET /moment/list?userId=1
两个接口,前端要调用两次,渲染界面也是两次。
这个还好,能并行请求,如果是需要 从前面的接口取出返回值 作为下一个接口的参数,
例如查评论列表,如果先
GET /comment/id=1
查出 comemnt 里的 userId = 1,然后回调里再调用
GET /user?id=1

代码很容易写成这种这样
```js
axios.get("/comment/id=1")
.then(function (response) {
console.log(response);

var userId = (response && response.data && response.data.data) ? response.data.data.userId
if (userId == null) {
console.log('axios.get("/comment/id=1").then userId == null >> return');
return
}
axios.get("/user/id=" + userId)
.then(function (response) {
console.log(response);
//TODO 渲染界面
})
.catch(function (error) {
// handle error
console.log(error);
})
})
.catch(function (error) {
// handle error
console.log(error);
})
```
如果是 Android 或 iOS 代码,那就更麻烦了。

至于你说的
“我要自己方便我完全可以一个 model 直接生成服务端客户端代码”
然后呢?这种只能生成简单的单表增删改查 API 的代码,能直接满足需求了?
多表关联查询怎么办?模糊搜索、分组排序 都生成了?
还不是要改,后面需求改了还不是要改后端代码或新增接口?

APIJSON Server 不生成任何静态代码,只生成动态的 SQL 语句,
前端改了 JSON 参数,后端就生成新的 SQL 语句, 满足新的需求,
不需要后端写任何代码来实现上面的说 模糊搜索、分组排序 等,
还有自动化 JOIN 也不需要后端写代码:
```js
{
"[]": {
"count": 10, // LIMIT 10
"join": "</User/id@", // Comment LEFT JOIN User
"Comment": {
"content~": "a", // content REGEXP 'a'
"@group": "momentId", //GROUP BY momentId
"@order": "date+" //ORDER BY date ASC
},
"User": {
"@column":"id,name", // SELECT id,name
"id@": "/Comment/userId" // ON User.id = Comment.userId
}
}
}
```
APIJSONLibrary 生成
```sql
SELECT `Comment`.*, `User`.`id`, `User`.`name` FROM `sys`.`Comment` AS `Comment` WHERE `Comment`.`content` REGEXP 'a'
LEFT JOIN (SELECT `id`, `name` FROM `sys`.`apijson_user`) AS `User` ON `User`.`id` = `Comment`.`userId`
GROUP BY `Comment`.`momentId` ORDER BY `Comment`.`date` ASC LIMIT 10 OFFSET 0
```
来,你介绍个其它的工具,能生成这样比较复杂的 SQL,让大家都见识见识。

“ star 数不能说明什么,我记得有个 go web 教程有 2w7 star …”
再次强调:
Star 在一定程度上反映了 Repo 在开源社区的受欢迎程度,同类型的 Repo ( APIJSON 和 Hibernate 都是 ORM 库)对比是有参考意义的。
“教程”,工具集合,AwesomeXX 库集合 这种大而全的项目,
本身就容易获得 Star,很多人都觉得收藏起来万一里面有东西可以用上,
反而是专注于解决某个场景的问题的一些库,除非有 名企 或 名人 光环,否则 Star 就相对难获得很多,
Hibernate 快 12 年了不也才 3.5 K Star 嘛,难道它的技术价值,使用率比不上你说的那个“ go web 教程”?
不同类型的项目拿到一起对比才基本没有参考价值。
TommyLemon
2018-12-21 11:38:36 +08:00
@TommyLemon 有出错误,“教程” 一般不属于 大而全的项目,它的 Star 数往往和对应的 语言 /开源库 的热度有很大关系,Go 现在火得很,Star 多太正常了。几年前我一个同事翻译了 Swift 的文档,短短几个月就有好几千 Star 了。
TommyLemon
2018-12-21 11:42:24 +08:00
@TommyLemon 至于学习成本,哪个开源库没有学习成本?你不看文档,不看例子等,直接就拿来用了?
APIJSON 简单易用,提供了丰富的文档、Demo、视频等,还有在线接口工具
apijson.org
cyssxt
2018-12-21 11:50:54 +08:00
首先 ,真的,楼主做这个很厉害 !但是对于小企业来说有点用,但是对于类似于为服务这种或者业务逻辑复杂的项目来说 实用性并不大。然 git star 之前一方面是能展示受欢迎程度 ,但是现在 star 的水分已经很多了 麻烦楼主不要和 hibernate 比,使用 hibernate 的项目已经不计其数了!至于 star,我想没几个人用到 hibernate 还去 git 上面 star 一下吧!我觉得给出一个数据,比如使用 aoijson 的项目超过 hibernate 的项目多多少,这对我来说才是一个参考。最后,我觉得现在这个开源项目已经成为一个商业推广项目,而背离了开源的初衷!对了,为什么 issue 多就是 bug 多,bug 多是问题么?我觉得推广自己可以,不要这么伤害 hibernate 可以么?总之:用的人越多,项目的价值才越大。勿喷!个人想法!
momocraft
2018-12-21 11:53:05 +08:00
和 hibernate 不比年代不比地位不比身经百战度,单拿星数当“参考价值”

你是作者你开心就好,也请理解不是所有人都吃这样的宣传
knightdf
2018-12-21 11:56:19 +08:00
Hibernate 可没来过 v2 拉 star
TommyLemon
2018-12-21 12:21:36 +08:00
@knightdf
我在很多评论和回复里都承认了 Hibernate 的历史地位,尤其还说明了它“是 Java 第 2 大 ORM 库”。

V2EX 又不是国外网站,Hibernate 团队不在这里发帖有什么奇怪的?
APIJSON 也没在 Twitter 和 Facebook 推广过
https://twitter.com/Hibernate
https://www.facebook.com/HibernateORM


jackson 主页
https://github.com/FasterXML/jackson
底部有对比其它 JSON 库的链接
https://dzone.com/articles/be-lazy-productive-android

Vue 对比其它框架
https://cn.vuejs.org/v2/guide/comparison.html#React

Tinker 对比其它热更新库
https://github.com/Tencent/tinker/wiki

对比已有的热门库是国内外都很普遍的做法,而且有时候不是作者一开始想要对比,而是一堆人说
“我为啥不用 XXX ”,“和 XXX 相比有什么优势?”,“和 XXX 很像”,“不就是 XXX 么?”...
作者为了消除误解,反对不经思考或验证随意说出来贬低自己项目的声音,有什么不可以吗?
TommyLemon
2018-12-21 12:27:56 +08:00
@TommyLemon 另外现在确实有些库的 Star 很水,作假行为扰乱公平性,把社区搞得乌烟瘴气,
不过 求 Star 和 刷 Star 是有 真实 与 作假 的 本质区别的
https://www.zhihu.com/question/66587533/answer/244148558

至于 APIJSON 的 Star 的真实性,可以看趋势图
https://www.timqian.com/star-history/#TommyLemon/Android-ZBLibrary&TommyLemon/APIJSON
或者点 Star 的用户(基本没有三无账号),分别填 TommyLemon APIJSON
https://haochuan9421.github.io/stargazers/
TommyLemon
2018-12-21 12:30:05 +08:00
@TommyLemon 三无账号是指 无非随机头像、无非随机用户名、无 repo
TommyLemon
2018-12-21 12:34:59 +08:00
//-------------------------------------------------------------------------------------
20 个评论已满,后面的评论不再回复,前面剩下的看时间一个个回复。
//-------------------------------------------------------------------------------------

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

https://tanronggui.xyz/t/519237

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

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

© 2021 V2EX