接口对接文档规范2023年最新版(Restful API风格)

接口对接文档

  • 服务共享

1、设计模式

使用Restful API风格, Restful API的优势是具备更好的易用性,让异构系统更容易集成,且开发执行效率比较高,面向资源要求也比较高。

2、设计约束

2.1 协议约束

这里的协议是指API与用户的通信协议,建议使用HTTPS协议。

2.2  URI约束

URI统一资源标识符是一个用于标识某一互联网资源名称的字符串。该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。Web上可用的每种资源-HTML文档、图像、视频片段、程序等-由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。

现定义URI规范如下:

  • 不使用大写。
  • 用中杠-不用下杠_。
  • 参数列表要encode
  • URI中的名词表示资源集合,使用复数形式
  • URI表示资源的两种方式:资源集合、单个资源。比如:

A: 资源集合:

/zoos          //所有动物园

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

B: 单个资源:

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

  • 路径层级小于三层,避免层级过深。

/在url中表达层级,用于按实体关联关系进行对象导航,一般根据id导航。

过深的导航容易导致url膨胀,不易维护,如 GET /zoos/1/areas/3/animals/4,尽量使用查询参数代替路径中的实体导航,如GET /animals?zoo=1&area=3;

  • 组合资源的访问必须通过父实体的id导航访问。

组合实体不是first-class的实体,它的生命周期完全依赖父实体,无法独立存在,在实现上通常是对数据库表中某些列的抽象,不直接对应表,也无id。一个常见的例子是 User— Address,Address是对User表中zipCode/country/city三个字段的简单抽象,无法独立于User存在。必须通过User索引到Address:GET /user/1/addresses

2.3 请求方式

通过标准HTTP方法对资源CRUD,禁用一种访问方式进行多种形式的资源操作。建议采用GET获取某个资源,采用POST新建某个资源。其他请求方法不建议使用。

(1)GET请求:

  • 查询可能附带的约束:过滤条件,排序,投影,分页等。

比如:?size=10¤t=1

  • 复杂查询:经常使用的、复杂的查询标签化,降低维护成本。

比如:GET /trades/recently-closed

(2)POST:创建单个资源(注:POST一般向“资源集合”型uri发起,如果是组合资源一般向父级实体发起)

2.4 数据格式

使用常用的数据格式,这里建议使用:

Content-Type: application/json;charset=UTF-8

2.5 请求内容

基于不通的请求方式GET或者POST,使用不同的参数内容。

如使用GET方式请求参数使用Query参数。参数列表要使用encode格式化。如果存在分页查询,分页参数这里限定使用size表示每页记录数,使用current表示第几页。

如使用POST方式请求参数使用request body形式提交参数,请求体使用json格式。

备注:不允许存在空的请求参数,比如:{},这种方式是不允许的,默认需要存在一个必填的参数,其它参数可非必填。

2.6 响应状态

HTTP 应答中,需要带一个很重要的字段:status code。它说明了请求的大致情况,是否正常完成、需要进一步处理、出现了什么错误,对于客户端非常重要。状态码都是三位的整数,大概分成了几个区间:

2XX:请求正常处理并返回

3XX:重定向,请求的资源位置发生变化

4XX:客户端发送的请求有错误

5XX:服务器端错误

2.7 错误处理

1、不要发生了错误但给2xx响应,客户端可能会缓存成功的http请求;

2、正确设置http状态码,不要自定义;

3、Response body 提供错误的描述文本(展示给用户)。

API 可能抛出两类异常:业务异常和非业务异常。业务异常由自己的业务代码抛出,表示一个用例的前置条件不满足、业务规则冲突等,比如参数校验不通过、权限校验失败。非业务类异常表示不在预期内的问题,通常由类库、框架抛出,或由于自己的代码逻辑错误导致,比如数据库连接失败、空指针异常、除0错误等。

业务类异常必须提供2种信息:

(1)如果抛出该类异常,对业务类异常,用它指定的 HTTP code;对非业务类异常,统一500;

(2)异常的文本描述;

需要在Controller层使用统一的异常拦截器:

Response Body 的错误描述:对业务类异常,用它指定的错误文本;对非业务类异常,线上可以统一文案如“服务器端错误,请稍后再试”,针对非业务类异常,应该在 Response body 中通过 msg 给出明确的错误信息(一般来说,返回的信息中将 msg 作为键名,出错详情作为键值即可)。比如客户端发送的请求有错误,一般会返回 4XX Bad Request 结果。这个结果很模糊,给出错误 msg 的话,能更好地让客户端知道具体哪里有问题,进行快速修改。错误信息应该是代码处理后的错误描述,不应该返回程序自动抛出的错误信息。

2.8 响应内容

响应的数据内容应该有标准的JSON输出格式

1、响应基本格式

{

    "code": "xxx", 

    "msg": "xxx", 

    "data": { }

}

code:表示返回状态。

message: 表示返回消息提示

data:表示返回消息体,如果为数组,则表现为[]。

Code状态统一限定三类,其他响应参数值可自行扩展。

100000:成功响应

100003:失败响应

100005:查询空值

2、响应实体格式

{

    "code": "100000", 

    "msg": "请求成功", 

"data": {

"key1""xxx", 

"key2""xxx"

}

}

Data表示为具体返回的实体类。

3、响应列表格式

{

    "code": "100000", 

    "msg": "请求成功", 

"data": [

{

"key1""xxx", 

"key2""xxx"

},

    ……

]

}

Data表示具体返回的列表数据。

4、响应分页格式

{

    "code": "100000", 

    "msg": "请求成功", 

"data": {

  "records":[

{

"key1""xxx", 

"key2""xxx"

},

……

]

,

"total": 100, 

"size": 10, 

"current": 1, 

"pages": 10, 

"其他参数": xxx, 

……

}

Data:分页的具体记录集合。

Total:表示总记录数。

Size:表示分页的记录数

Current:表示当前第几页

Pages:表示总分页数

其他参数可以自行扩展。

  • 服务订阅
  1. 基础架构

EMQ是基于物联网 MQTT(消息队列遥测传输协议) 的消息代理服务。MQTT消息队列遥测传输协议,是一种基于发布/订阅模式的"轻量级"通讯协议,该协议构建于TCP/IP协议。我们这里使用发布订阅(PubSub)模式消息服务器,基于主题(Topic)进行消息路由。

  1. 数据传输

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:

(1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);

(2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

  1. 客户端使用

使用MQTT协议建立到服务器的网络连接。此时可以操作如下内容:

(1)订阅指定Topic的消息内容;

(2)退订Topic;

(3)断开与服务器连接。

  1. 名词解释

4.1 订阅说明

订阅包含主题(Topic)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题。

4.2 会话说明

每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。

4.3 主题说明

连接到一个消息通道的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。

4.4 负载(Payload

消息订阅者所具体接收的内容.

4.5 MQTT协议中的方法

MQTT协议中定义了一些方法,来于表示对确定资源所进行操作。主要方法有:

(1)Connect。等待与服务器建立连接。

(2)Disconnect。等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话。

(3)Subscribe。等待完成订阅。

(4)UnSubscribe。等待服务器取消客户端的一个或多个topics订阅。

附上下载地址

https://download.csdn.net/download/alafqq/87360017

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信息安全与项目管理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值