什么是接口文档?接口文档设计指南

大雄 281 2022-07-10


在项目开发中,web项目的前后端分离开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。


为什么要写接口文档?

1、项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发

2、项目维护中或者项目人员更迭,方便后期人员查看、维护


设计原则

充分理由:不是随便一个功能就要有个接口,也不是随便一个需求就要加个接口。每新建一个接口,就要有充分的理由和考虑,无意义的接口不仅增加了维护的难度,更重要是对于程序的可控性的大大降低,接口也会十分臃肿。

职责明确:一个接口只负责一个业务功能,比如查询会员,但不要在查询会员的同时还有修改权限等类似的其他业务功能,应该分成两个接口做。

高内聚低耦合:一个接口要包含完整的业务功能,而不同接口之间的业务关联要尽可能的小。

分析角度明确:设计接口分析的角度要统一明确。否则会造成接口结构的混乱。

入参格式统一:所有接口的参数格式要求及风格要统一,不要一个接口参数是逗号分隔,另一个就是数组;不要一个接口日期参数是x年x月x日风格,另一个就是x-x-x。

状态及消息:提供必要的接口调用状态信息。调用是否成功?如果失败,那么失败的原因是什么。这些必要的信息必须要告诉给客户端。

控制数据量:一个接口返回不应该包含过多的数据量,过多的数据量不仅处理复杂,对数据传输的压力也非常大,会导致客户端反应缓慢。过多的数据量很多时候都是接口划分不明确。

常见的几种接口形式

1、HTTP 接口(RESTful)


基于HTTP协议开发的接口现在应用是最为广泛的,这类API使用起来简单明了,因为它是轻量级的、跨平台、跨语言的,但凡是第三方提供的API都会有HTTP版本的接口。

RESTful API也是基于HTTP协议的,只不过RESTful它并不是一种规范,它是一种设计准则,用不同的HTTP动词(GET、POST、DELETE、PUT等)来表达不同的请求。


2、RPC 接口


RPC技术是指远程过程调用,它本质上是一种Client/Server模式,可以像调用本地方法一样去调用远程服务器上的方法,它支持多种协议(如:HTTP、TCP、UDP、自定协议)和多种数据传输方式(如:Json、XML、Binary、Protobuf等)。


3、Web Service 接口


Web Service其实是一种概念,我们可以将以WEB形式提供的服务称为Web Service,所以像RESTful、XML-RPC、SOAP等都可以当成是Web Service的一种实现方式。

不过Web Service接口和HTTP接口存在一些细小区别就是,Web Service接口支持更复杂的对象,而HTTP接口更多的就是传输字符串或者JSON文本。


我们这里以RESTful风格的HTTP接口为例

RESTful API

REST 全称:RE presentational State Transfer,英文翻译过来就是“表现层状态转化”


用URL定位资源、用HTTP动词(GET、POST、PUT、DELETE)描述操作


基于REST构建的API就是Restful风格。


接口说明

接口描述

准确描述出 使用者,做什么操作,产生什么影响。


请求地址

请求地址中,我们应该写清楚协议,也就是使用http还是https,有些平台已经是强制只能使用https了,因为更加安全。


URL注意事项

不用大写

用中杠-不用下杠_

URI中的名词表示资源集合,使用复数形式

资源集合 vs 单个资源


URI表示资源的两种方式:资源集合、单个资源。


资源集合:


/zoos //所有动物园

/zoos/1/animals //id为1的动物园中的所有动物

1

2

单个资源:


/zoos/1 //id为1的动物园

1

HTTP 与 HTTPS 区别

HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

请求方式

请求方法有很多同,但是最常用的是GET,POST,如果使用 RESTful 规范,还会使用到等其他请求方法。


GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

1

2

3

4

5

请求头

请求头通常用来传递一些公用的参数,比如Content-Type,Accept,Cookie,Authorization等。


公共参数

以下三种参数是我们需要明确的


Authorization 是否需要认证

Accept 代表客户端希望接受的数据类型 一般是json

Content-Type 代表发送端(客户端|服务器)发送的实体数据的数据类型 一般是json


字符编码

均使用UTF-8编码


参数说明

请求参数

Parameter Name Required Type(length) Format Description(EN) Description Sample

字段 是否必填 类型(最大长度) 格式 英文说明 说明 例子

类型是属性类型,只有String、Number、Object、Array四种类型;


响应参数

Parameter Name Type Format Description(EN) Description Sample

字段 类型 格式 英文说明 说明 例子

状态码参考

约定大于配置,配置大于编码


200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。

201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。

202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)

204 NO CONTENT - [DELETE]:用户删除数据成功。

400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。

403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。

422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

1

2

3

4

5

6

7

8

9

10

11

12

SAMPLE

Request URL

https://{domain}/serviceName/v1/admin/sorting

1

Request Body

{

  "Id": 1,

    "sortingResult": "A",

    "sortingMemo": "第一次分类"

}

1

2

3

4

5

Response Body

//成功输出示例

{

  "Response": {

    "Status": "200",

    "ErrorCode": 0,

    "ErrorMessage": NULL,

    "Data": {

        

    }

  }

}

//失败输出示例

{

  "Response": {

    "Status": "400",

    "ErrorCode": "e.cmm.5000",

    "ErrorMessage": "Validation error.",

    "Data": {

        

    }

  }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22


考虑的方面:

1)服务器;

2)数据及格式;

3)安全;

4)会话及响应码。

host地址

测试环境:
准生产环境:
生产环境:

本文档使用 host/requestPath 的形式描述请求路径。

数据安全

采用https信道加密技术来保证通信安全;
其它安全措施,待定;

通信协议与数据格式

1)所有客户端请求数据使用post方式发送;
2)报文数据使用json封装;http Content-Type选项为application/json。

报文格式说明

请求格式

{
    param1:value1,
    ........
    paramn:valuen,
}

响应格式

{
    respCode:code,
    respMsg:msg,
    respData:{},
}

respCode说明

code说明
0成功
100参量错误
300服务不可用(访问路径错误、无访问权限)

请求报文通用参量

参量名称说明类型
apiVersion服务器api版本号string
appVersion客户端版本号string
deviceId设备idstring

登录接口

requestPath:login

请求参量

参量名称说明类型
userName用户名string
passWordmd5(真实的用户密码)string

说明:用户的登录状态与设备绑定;以便完成推送功能和踢出登录功能。

respData参量: 无

退出登录接口

requestPath:logout

参量名称说明类型
userName用户名string

respData参量: 无



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:特斯拉涨价的背后,“反向营销”还是赎本大剧?
下一篇:上海新推出中药奶茶:细数那些茶饮品牌的新奇营销!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~