atitit.基于http json api 接口设计 最佳实践 总结o7

atitit.基于http  json  api 接口设计 最佳实践 总结o7

1. 需求:::serverand android 端接口通讯 2

2. 接口开发的要点 2

2.1. 普通參数 meth,param, 2

2.2. 全部的參数定义 2

2.3. key,dynami key)韩式 static key? 2

2.4. 防篡改 sign 2

2.5. Encry加密 3

2.6. zip压缩:: 3

2.7. 首先压缩韩式加密??? 3

3. 选型大全:rim ,ws, http xml ,json ,RESTful  -- RPC ---ws 3

3.1. RPC 样式/ REST 样式 3

3.2. RPC的长处::与编程语言概念相应   meth(param) 3

4. 从开发速度考虑,单个的url  json RPc更加好。。 4

4.1. json能够同步开发 4

4.2. 须要传递的參数使用无状态。。

每次都须要trans tok 4

4.3. 概念简单.走十meth(para) 4

4.4. 要不要信封???

4

4.5. http请求方式: GET/Post 4

5. 公布对外http接口:注冊api接口子方法处理器(服务端) 5

5.1. 使用实现类的方法注冊.. 5

5.2. 使用闭包的方式注冊::: 5

5.3. 闭包DSL::: 5

6. client调用接口overview 6

6.1. 请求返回说明(正常情况下) 6

6.2. 错误时返回 6

7. 全局返回码说明例如以下: 6

8. QA:: 7

9.  8

10. 什么是REST? 8

10.1. 无状态:::- 8

10.2. URI 8

10.3. 还有一个重要的 REST 原则是分层系统, 8

11. RESTful架构有一些典型的设计误区。

9

11.1. 最常见的一种设计错误。就是URI包括动词。

9

11.2. 还有一个设计误区,就是在URI中增加版本: 9

12. restful的缺点:frag 9

13. ws---不能同一时候开发。麻烦。基于wsdl工具的没有 9

14. 參考 9

1. 需求:::serverand android 端接口通讯

2. 接口开发的要点

2.1. 普通參数 meth,param,

2.2. 全部的參数定义

附加參数说明


參数


是否必须


说明


meth



调用的接口方法( 验证,返回设备状态。反馈下载信息,播放流水上传等,各自模块定义)


Param



实际的參数


appid



secret



预留,可临时不用。。 用户唯一凭证密钥,即appsecret


Sign



签名


Zip



实际參数是否压缩 为t显示为压缩状态..


Encry



If 加密方式这个是非空的,其它參数不生效..非加密能够空的,其它參数生效

2.3.  key,dynami key)韩式 static key?

accessKey ( dynami key)韩式 static key??

2.4. 防篡改 sign

普通的md5 签名已经不安全了.. 比較好的是混合签名法..

2.5. Encry加密

使用等级最高的的aes 加密法..

2.6. zip压缩::

当数据上传量大的时候儿,应该使用压缩

2.7. 首先压缩韩式加密??

?

应该首先压缩在加密... 中间要是 接收了小,解密,不正确走不须要解压了..

And 加密的时候儿数据也猴..

3. 选型大全:rim ,ws, http xml ,json ,RESTful  -- RPC ---ws

3.1. RPC 样式/ REST 样式

RPC 样式的 Web 服务client将一个装满数据的信封(包含方法和參数信息)通过 HTTP 发送到server。

server打开信封并使用传入參数运行指定的方法。

方法的结果打包到一个信封并作为响应发回client。

client收到响应并打开信封。每一个对象都有自 己独特的方法以及仅公开一个 URI 的 RPC 样式 Web 服务,URI 表示单个端点。它忽略 HTTP 的大部分特性且仅支持 POST 方法。

在 RPC 样式的架构中。关注点在于方法。而在 REST 样式的架构中,关注点在于资源 —— 将使用标准方法检索并操作信息片段(使用表示的形式)。资源表示形式在表示形式中使用超链接互联。

3.2. RPC的长处::与编程语言概念相应   meth(param)

4. 从开发速度考虑。单个的url  json RPc更加好。。

4.1.  json能够同步开发

ws 要同步开发要使用wsdl,可是wsdl可视化工具非常少..麻烦的..

4.2. 须要传递的參数使用无状态。。每次都须要trans tok

meth。param。tok。

4.3. 概念简单.走十meth(para)

4.4. 要不要信封???

韩式使用req param 做为信封...要是马信封 ,直接post,不好form 提交測试..

http://host/api.jsp?appid=APPID&secret=APPSECRET&submethod=login?m={param1:val1,param2:val2}

4.5. http请求方式: GET/Post

作者:: 老哇的爪子 Attilax 艾龙。  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

5. 公布对外http接口:注冊api接口子方法处理器(服务端)

基本的加入一行...HandlerChain reg(String subMeth,Handler handler);

5.1. 使用实现类的方法注冊..

HandlerChain.reg("postPlayRec", new HandlerImp1());

5.2. 使用闭包的方式注冊:::

HandlerChain.reg("postPlayRec", new Handler() {

@Override public Object handleReq(Object arg) throws Exception {

// attilax 老哇的爪子 is6 o7l

return " o788 test ...";

}

});

5.3.  闭包DSL:::

导入template。xml模板。

。java>editor>template>>import。。。

输入api   生成一下大陀代码

HandlerChain.reg("postPlayRec", new Handler() {

@Override public Object handleReq(Object arg) throws Exception {

// attilax 老哇的爪子 is6 o7l

return " o788 test ...";

}

});

6. client调用接口overview

http://host/api.jsp?appid=APPID&secret=APPSECRET&submethod=login?m={param1:val1,param2:val2}

6.1. 请求返回说明(正常情况下)

正常情况下,server会返回下述JSON数据包:

{param1:val1,param2:val2}

參数含义各模块定义。。。

6.2. 错误时返回

会返回错误码等信息。JSON数据包示比例如以下(该演示样例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid" }

7. 全局返回码说明例如以下:

每次调用接口时,可能获得正确或错误的返回码, 能够依据返回码信息调试接口。排查错误。


返回码


说明


-1


系统繁忙


0


请求成功


40002


不合法的凭证类型


40008


不合法的消息类型


40013


不合法的APPID


40021


不合法的版本


40033


不合法的请求字符,不能包括\uxxxx格式的字符


40035


不合法的參数


40038


不合法的请求格式


40039


不合法的URL长度


40050


不合法的分组id


40051


分组名字不合法


41001


缺少參数


42001


超时


43001


须要GET请求


43002


须要POST请求


43003


须要HTTPS请求


44002


POST的数据包为空


45009


接口调用超过限制


45015


回复时间超过限制


46001


不存在媒体数据


46004


不存在的用户


47001


解析JSON/XML内容错误


48001


api功能未授权


50001


用户未授权该api


其它返回码


。。

8. QA::

get方式发送參数是须要url编码。

9.

10. 什么是REST?

REST (REpresentation State Transfer) 描写叙述了一个架构样式的网络系统,比方 web 应用程序。它首次出如今 2000 年 Roy Fielding 的博士论文中。他是 HTTP 规范的主要编写者之中的一个。

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

10.1. 无状态:::-

---Web 应用程序最重要的 REST 原则是,client和server之间的交互在请求之间是无状态的。从client到server的每一个请求都必须包括理解请求所必需的信息。假设server在请求之间的不论什么时间点 重新启动。client不会得到通知。此外,无状态请求能够由不论什么可用server回答,这十分适合云计算之类的环境。

client能够缓存数据以改进性能。

10.2. URI

URI仅仅代表资源的实体,不代表它的形式。

严格地说。有些网址最后的".html"后缀名是不必要的。由于这个后缀名表示格式,属于"表现层"范畴,而 URI应该仅仅代表"资源"的位置。它的详细表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定。这两个字段才是 对"表现层"的描写叙述。

10.3. 还有一个重要的 REST 原则是分层系统。

这表示组件无法了解它与之交互的中间层以外的组件。

通过将系统知识限制在单个层,能够限制整个系统的复杂性,促进了底层的独立性。

当 REST 架构的约束条件作为一个总体应用时,将生成一个能够扩展到大量client的应用程序。

它还减少了client和server之间的交互延迟。统一界面简化了整个系统架构。改进了子系统之间交互的可见性。REST 简化了client和server的实现。

11. RESTful架构有一些典型的设计误区。

11.1. 最常见的一种设计错误,就是URI包括动词。

由于"资源"表示一种实体。所以应该是名词,URI不应该有动词。动词应该放在HTTP协议中

11.2. 还有一个设计误区。就是在URI中增加版本:

  http://www.example.com/app/1.0/foo

  http://www.example.com/app/1.1/foo

  http://www.example.com/app/2.0/foo

由于不同的版本号,能够理解成同一种资源的不同表现形式,所以应该採用同一个URI。版本号号能够在HTTP请求头信息的Accept字段中进行区

12. restful的缺点:frag

要设置一瓦url了..不适合java开发..热部署的问题.

13. ws---不能同一时候开发,麻烦,基于wsdl工具的没有

14. 參考

什么是REST?以及RESTful的实现 - 51CTO.COM.htm

时间: 2024-10-26 05:22:13

atitit.基于http json api 接口设计 最佳实践 总结o7的相关文章

php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是restful api 请明白一点,这个只是设计指导思想,也就是设计风格 ,比如你需要遵循这些原则 原则条件REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 RESTful.Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的.从客户端到服务

Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql

Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql 1. 图16.1:MySQL体系结构1 2. 16.7. 创建表create()虚拟函数:2 3. 16.8. 打开表 open()2 4. ---------------------------------------------------------------------------------------------------------------------2 5. 16.9. 实施基本的

RESTful API 设计最佳实践(转)

摘要:目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API格式如何?你的API是否应该加入版本信息? 背景 目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API格式如何?你的API是否应该加入版本信息?当你开始写一个app的时候,特别是后端模型部分已经写完

RESTful API 设计最佳实践

1. 背景 REST(英文:Representational State Transfer,表述性状态转移)描述了一个架构样式的网络系统,比如 web 应用程序. 目前互联网上充斥着大量的关于RESTful API(为方便,下文中"RESTful API "简写为"API")如何设计的文章,然而却没有一个"万能"的设计标准:如何鉴权?API 格式如何?你的API是否应该加入版本信息?当你开始写一个app的时候,特别是后端模型部分已经写完的时候,你

RESTful API 设计最佳实践(转)

背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API 格式如何?你的API是否应该加入版本信息?当你开始写一个app的时候,特别是后端模型部分已经写完的时候,你不得不殚精竭虑的设计和实现自己app的public API部分.因为一旦发布,对外发布的API将会很难改变. 在给SupportedFu设计API的时候,我试图以实用的角度来解决上面提到的问题.我希望可以设计

Web API接口设计(学习)

1.在接口定义中确定MVC的GET或者POST方式 由于我们整个Web API平台是基于MVC的基础上进行的API开发,因此整个Web API的接口,在定义的时候,一般需要显示来声明接口是[HttpGet]或者[HttpPost],虽然有些接口也可以不用声明,但是避免出现类似下面的错误信息,显式声明还是有好处的. 请求的资源不支持 http 方法“POST 例如在基类定义的查找对象接口如下所示. /// <summary> /// 查询数据库,检查是否存在指定ID的对象 /// </su

Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据

Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1.?配置条件字段@Conditional 1 1 2. 2.?配置条件字段显示类型为[email protected](displayType?=?displayType.rang,?rangStart?=?rang.start,?rangEnd?=?rang.end,op=op.range) 1 3. #----show  condition  page  list 1 4.

1、API接口设计--前言

1.场景描述 比如说我们要做一款APP,需要通过api接口给app提供数据.假设我们是做商城,比如我们卖书的.我们可以想象下这个APP大概有哪些内容: 1)首页:banner区域(可以是一些热门书籍的图片做推广).本周热卖书籍区域.本月好评书籍区域.活动打折的书籍区域... 2)排行榜:比如第一季度热销榜.新书版... 3)书单:管理后台运营添加的书单,比如<程序员从入门到放弃>系列书单... 4)用户相关的:比如用户个人信息设置.订单管理.消息管理.收藏的书籍... 数据是保存在数据库中,考

[1.30] 保持的力量:接口开发最佳实践

神啊,求你赐给我平静的心,去接受我无法改变的事:赐给我勇气,去做我能改变的事:赐给我智慧,去分辨两者的不同. --平静之祷 1.30.1 论保持的力量 追到一个心仪的女生不难,难于如何保持和培养一份真挚的感情:获得一时的财富也不难,难于如何长久保持收益:创业的公司很容易博得一时媒体的关注以及某次天使的投资,但难于如何排除各种障碍.充分利用各方资源发展成中企业及至上市公司. 同样,提供一时的接口很容易,但当我们需要不断为接口提供升级,以及当我们维护提供一整套接口时,面临的困难和问题会越来越大.所以