相关阅读:

完爆Facebook/GraphQL,APIJSON全方位对比解析(二)-权限控制

完爆Facebook/GraphQL,APIJSON全方位对比解析(三)-表关联查询

自APIJSON发布以来,不断有网友拿来和Facebook的GraphQL对比,

甚至有不少人声称“完爆”APIJSON。

然而事实正好相反,本系列博客将以大量真实依据来证明,

APIJSON“完爆”GraphQL!

APIJSON的口号是:

后端接口和文档自动化,前端(客户端) 定制返回JSON的数据和结构!

APIJSON的简介:

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

通过自动化API,前端可以定制任何数据、任何结构!
大部分HTTP请求后端再也不用写接口了,更不用写文档了!
前端再也不用和后端沟通接口或文档问题了!再也不会被文档各种错误坑了!
后端再也不用为了兼容旧接口写新版接口和文档了!再也不会被前端随时随地没完没了地烦了!

特点功能

在线解析

  • 自动生成文档,清晰可读永远最新
  • 自动生成请求代码,支持Android和iOS
  • 自动生成JavaBean文件,一键下载
  • 自动管理与测试接口用例,一键共享
  • 自动校验与格式化JSON,支持高亮和收展

对于前端

  • 不用再向后端催接口、求文档
  • 数据和结构完全定制,要啥有啥
  • 看请求知结果,所求即所得
  • 可一次获取任何数据、任何结构
  • 能去除重复数据,节省流量提高速度

对于后端

  • 提供通用接口,大部分API不用再写
  • 自动生成文档,不用再编写和维护
  • 自动校验权限、自动管理版本
  • 开放API无需划分版本,始终保持兼容
  • 支持增删改查、模糊搜索、正则匹配、远程函数等

视频演示:i.youku.com/apijson

[以下Gif图看起来比较卡,实际在手机上App运行很流畅]

项目主页: github.com/TommyLemon/…

完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能

基础功能对比

APIJSON和GraphQL既有相通的功能,又有各自的特色功能。

其实,不管是以APIJSON还是GraphQL作为标准来说,这都不公平。

好在后端的大部分工作就是对数据库的增删改查,

几乎所有的API都是基于数据库的功能来实现的,

那么我们以数据库的功能作为标准就是一个很好的选择。

就以目前最流行的开源数据库MySQL为例吧:

如图所示,MySQL的基础功能中:

GraphQL仅支持极少的几个,而且全都要后端手动实现;

但APIJSON全都支持,而且全都是自动化的实现!

返回字段:

GraphQL强制前端在请求里填写所有需要的字段名,用换行分隔。

{key0key1...
}

例如

http://graphql.org/learn/queries/#arguments

{human(id: "1000") {nameheight}
}

而APIJSON则默认返回全部字段,可选 @column 来指定需要的字段。

"@column":"key0,key1,..." 

例如

{"User":{"id":38710,"@column":"id,name"}
}

试想一下,很多时候我们会有查询单个对象(用户详情User,动态详情Moment等)的需求,往往对象里的字段几乎全都是需要返回的。

即便是查询列表,像APIJSONServerDemo的Comment这种没有冗余字段的表里每个都要用啊!

GraphQL这种强制性的做法无疑会导致前端很多时候在很多对象里写10个以上的字段。

以它的JavaScript源码为例,简单Demo级别的Human里就得写6个字段!

https://github.com/graphql/graphql-js/blob/master/src/__tests__/starWarsSchema.js

{human {idnamefriends {}appearsIn {}homePlanetsecretBackstory}
}

如果用APIJSON呢?就这么简洁:

{"Human": {}
}

状态码(APIJSON特有):

GraphQL没有状态码!GraphQL没有状态码!GraphQL没有状态码!!!

这点非常奇葩,难以置信,但事实如此。

我们经常会碰到 登录超时或其它设备登录要强制当前用户下线、付款时可能有密码错误、余额不足等各种情况。

这些都需要一个和 操作成功(200)、其它错误 不一样的唯一标识,前端才能根据这些标识做不同的处理,

例如跳到登录界面,自动切换付款的银行卡等。

但现在GraphQL不提供状态码,也没看到其它的唯一标识!

所以前端除了能对错误进行提示,其它的操作根本不用想了!!!

而APIJSON就提供了和原来RESTful API一样的状态码,还是熟悉的配方,还是熟悉的味道。

未完待续...

APIJSON,让后端接口和文档自动化,前端(客户端) 定制返回JSON的数据和结构!

创作不易,右上角点Star支持下吧,非常感谢^_^

github.com/TommyLemon/…

完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能相关推荐

  1. 数据库管理哪家强?Devart VS Navicat 360°全方位对比解析

    今天小编向大家推荐的是两个开发环节的主流数据库管理品牌,那么你知道这两款数据库管理软件品牌与 数据库引擎配套的管理软件有什么区别吗?小编这就360°全方位为您解答: ★ 品牌介绍 Devart:拥有超 ...

  2. Nature重磅:人工智能从0到1, 无师自通完爆阿法狗100-0 | 深度解析

    本文授权转载自知社学术圈(微信id:zhishexueshuquan) 去年,有个小孩读遍人世所有的棋谱,辛勤打谱,苦思冥想,棋艺精进,4-1打败世界冠军李世石,从此人间无敌手.他的名字叫阿法狗. 今 ...

  3. vue的五个小实例解析其基础功能

    学习vue,在网上看到5个小实例,很受用.拿过来和大家一起分享,都是比较常见,基础的功能. 1.利用vue实现导航功能 <!DOCTYPE html> <html lang=&quo ...

  4. 为什么1GB内存的苹果能完爆3GB内存的安卓机

    一直以来,苹果走的都是特立独行的路线,安卓手机厂商虽然平台不同但是处处都可以看到抄袭苹果的影子.苹果手机的不可拆卸电池.不支持内存卡.需要剪小卡的三大奇葩设计也已经被安卓厂商抄烂了. 除了硬件方面,安 ...

  5. 完爆阿尔法狗元,DeepMind用5000台TPU训练出新算法,1天内称霸3种棋类

    大数据文摘作品 作者:姜范波.Aileen.Yawei Xia.龙牧雪.魏子敏 距离阿尔法狗元版本刷屏一个多月时间,阿尔法狗又进化了,这次不光可以玩围棋,不再是"狗"了.我一点也不 ...

  6. 陈乔恩版东方不败出炉 全方位对比各版教主

    制作人于正改编的金庸名著<笑傲江湖>电视剧终于在千呼万唤中揭开神秘面纱.陈乔恩版东方不败定妆照终于出炉!看到照片瞬间,仿佛一记惊雷从头上呼啸而过,这是东方小妹还是东方教主?下面就让小编带你 ...

  7. mate10 Android 功耗,华为mate10续航评测比拼惨遭完爆

    国行华为mate10正式发布,被花粉们最关心的价格十分感人,售价3899元起!除了价格还有最关心的就是电池续航,据了解这次华为mate10和mate10 pro电池容量都是4000毫安.就在国行mat ...

  8. 心电图 python_【铎悦干货】解析心电图基础(二),看完绝不后悔

    整理 | 王京阳 编辑 | 郭晨 校对 | 张慧 视觉 | 杨晋 第20篇干货文章,碎片化学习仅需:10分钟 此篇干货:来源于合作公众号[犬猫麻醉100问] 心电图诊断,从正确获取和记录一份完整的心电 ...

  9. notion自建服务器,秒杀传统型笔记!《Notion》等 5 款工具全方位对比,模块化笔记究竟强在哪?...

    原标题:秒杀传统型笔记!<Notion>等 5 款工具全方位对比,模块化笔记究竟强在哪? 在信息越来越丰富的今天,有一批敢于尝鲜的笔记爱好者们已经不再痴迷于以简洁语法为代表的 Markdo ...

最新文章

  1. layui监听当前页_事件监听 · layui使用手册 · 看云
  2. Java并发——ReentrantLock
  3. 【运维囧事】事先没想到客户光驱坏了,主要原因还是自己当初经验不足
  4. stm32 标准库一些比较容易犯的错误
  5. 留恋 nyoj 854
  6. SQL Server中通用数据库角色权限的处理详解
  7. ListView.setAdapter(adapter);空指针异常的解决的总结
  8. appium python api
  9. AX 2012 键盘快捷键
  10. netcfg 进程分析
  11. linux中的apche服务
  12. layui追加或动态修改表单元素不生效
  13. asp.net core mvc 错误处理 ExceptionFilterAttribute
  14. 关于数据,你的慌张,百度云ABC可能有办法!
  15. python绘制特洛伊小行星群
  16. c语言中变量赋值使用什么运算符,C语言基础学习运算符-赋值运算符
  17. k型热电偶材料_k型热电偶工作原理及详细参数
  18. HbuilderX使用Git版本控制
  19. 引流获客哪个渠道比较好?
  20. 计算机应用基础 统考成绩查询,网络教育统考成绩查询的方法有哪些

热门文章

  1. Qt中文手册 之 QTableWidget
  2. java显示位图_java – 大图标位图在通知中显示为白色方块?
  3. ajax请求必须打断点才能成功,Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)...
  4. 沈航计算机复试刷人,过来人的血泪教训:复试被刷原因大盘点
  5. mysql 行号_PQ获取TABLE的单一值作为条件查询MySQL返回数据
  6. 1 23 456c语言,2014年计算机二级考试C语言模拟题(1)
  7. Java项目:电商书城平台系统设计和实现(java+springboot+mysql+spring+jsp)
  8. java mongodb存base64_阿里JAVA面试分享经验【文末有福利】
  9. linux 不能运行程序代码,linux-无法在Ubuntu上运行我自己的OpenGL 3程序
  10. ie8加载js太慢_js ie8 慢