上一则:3600万中国人在抖音“上北大”
APIJSON是啥?
APIJSON是一类为API而生的JSON互联网统计数据传输协定。
为 单纯的校订改查、繁杂的查阅、单纯的外交事务操作方式 提供更多了全然手动化的API。能急剧减少合作开发和沟通交流生产成本,精简合作开发业务流程,延长合作开发阶段。
适宜较大型其间端分立的工程项目,特别是互联网创业团队。
透过手动化API,后端能订制任何人统计数据、任何人内部结构!
绝大部分HTTP允诺后端非但不必写USB了,更不必写文件格式了!
后端非但不必和后端沟通交流USB或文件格式难题了!非但不会被文件格式各式各样严重错误坑了!
后端非但不必为的是相容旧USB写旧版USB和文件格式了!非但不会被后端足不出户无休止地烦了!
特征机能
新浪网导出手动聚合文件格式,明晰可读总有一天新一代
自动聚合允诺标识符,全力支持Android和iOS
手动聚合大部份JavaBean,全屏浏览
手动管理工作单元测试,全屏共享资源
手动奇偶校验与序列化JSON,全力支持GT5516SBB和收展
不必再向后端催USB、求文件格式
统计数据和内部结构全然订制,要啥有啥
看允诺知结果,所求即所得
能去除重复统计数据,节省流量提高速度提供更多通用USB,绝大部分API不必再写
手动聚合文件格式,不必再编写和维护
手动奇偶校验权限、手动管理工作版本
查阅API无需划分版本,始终保持相容
全力支持校订改查、模糊搜索、正则匹配、远程函数等举个栗子(微信朋友圈的动态列表):
允诺:
{
“[]”: { //允诺一个array “page”: 0, //array条件 “count”:2,
“User”: { //允诺查阅名为User的table,返回名为User的JSONObject “sex”: 0 //object条件},
“Moment”: {
“userId@”: “/User/id”//缺省依赖路径,从同级object的路径开始},
“Comment[]”: { //允诺一个名为Comment的array “page”: 0,
“count”: 2,
“Comment”: {
“momentId@”: “[]/Moment/id” //完整依赖路径}
}
}
}
返回:
{
“[]”:[
{
“User”:{
“id”:38710,
“sex”:0,
“phone”:“1300038710”,
“name”:“Name-38710”,
“head”:“http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000”},
“Moment”:{
“id”:470,
“title”:“Title-470”,
“content”:“This is a Content…-470”,
“userId”:38710,
“pictureList”:[“http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000”]
},
“Comment[]”:[
{
“Comment”:{
“id”:4,
“parentId”:0,
“momentId”:470,
“userId”:310,
“targetUserId”:14604,
“content”:“This is a Content…-4”,
“targetUserName”:“targetUserName-14604”,
“userName”:“userName-93781”}
},
{
“Comment”:{
“id”:22,
“parentId”:221,
“momentId”:470,
“userId”:332,
“targetUserId”:5904,
“content”:“This is a Content…-22”,
“targetUserName”:“targetUserName-5904”,
“userName”:“userName-11679”}
}
]
},
{
“User”:{
“id”:70793,
“sex”:0,
“phone”:“1300070793”,
“name”:“Name-70793”,
“head”:“http://static.oschina.net/uploads/user/1174/2348263_50.png?t=1439773471000”},
“Moment”:{
“id”:170,
“title”:“Title-73”,
“content”:“This is a Content…-73”,
“userId”:70793,
“pictureList”:[“http://my.oschina.net/img/portrait.gif?t=1451961935000”]
},
“Comment[]”:[
{
“Comment”:{
“id”:44,
“parentId”:0,
“momentId”:170,
“userId”:7073,
“targetUserId”:6378,
“content”:“This is a Content…-44”,
“targetUserName”:“targetUserName-6378”,
“userName”:“userName-88645”}
},
{
“Comment”:{
“id”:54,
“parentId”:0,
“momentId”:170,
“userId”:3,
“targetUserId”:62122,
“content”:“This is a Content…-54”,
“targetUserName”:“targetUserName-62122”,
“userName”:“userName-82381”}
}
]
}
]
}
APIJSON怎么保证服务端返回给不同版本客户端的数据一致?比如我上一个版本一个USB返回的值是a,现在这个版本要对大部份版本客户端返回a+b,用传统方法只需要服务端把这个USB的返回值改下就好了,USB和客户端都不必改。
用APIJSON不就会导致对有些版本返回的是a,有些是a+b,这样就不能统一了?
APIJSON对允诺的导出和响应的操作方式都是在服务端完成的,对应的是APIJSON(Server)里的project。
服务端能拦截到相关允诺,比如允诺a的值,把原本返回的a改成a+b就能保证对大部份版本客户端返回a+b。也不需要客户端改标识符,至于USB就更不必管了,因为根本没有USB。
源码及文件格式
Github:https://github.com/TommyLemon/APIJSON
开放源码中国:http://git.oschina.net/TommyLemon/APIJSON
1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结
5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了…
7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事
9、2T架构师学习资料干货分享