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

2023-11-07 15:38

本文主要是介绍atitit 基于http json api 接口设计 最佳实践 总结o7,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

1. 需求:::服务器and 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. 客户端调用接口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. 需求:::服务器and 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 服务客户端将一个装满数据的信封(包括方法和参数信息)通过 HTTP 发送到服务器。服务器打开信封并使用传入参数执行指定的方法。方法的结果打包到一个信封并作为响应发回客户端。客户端收到响应并打开信封。每个对象都有自 己独特的方法以及仅公开一个 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:1466519819@qq.com

转载请注明来源: 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. 客户端调用接口overview 

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

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

正常情况下,服务器会返回下述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 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点 重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

 

10.2. URI

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

 

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

这表示组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。

当 REST 架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST 简化了客户端和服务器的实现。

 

 

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

我要啦免费统计           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

这篇关于atitit 基于http json api 接口设计 最佳实践 总结o7的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/364604

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000