api接口规范
协议接口的通信协议, 尽量使用https协议, 提高数据传输的安全性路由统一前缀未使用版本控制的项目, 路由统一使用/api开头, 方便在nginx反向代理时, 用/api将接口请求转发到后端服务的服务器版本控制将api的版本号放在url内, 如: domain/api/v{n}版本号使用整形表示大版本功能接口, 使用浮点型表示补充功能版本接口为了避免版本混乱, 建议最多保留3个版本如果使用了版本
·
协议
接口的通信协议, 尽量使用https协议, 提高数据传输的安全性
路由统一前缀
未使用版本控制的项目, 路由统一使用/api开头, 方便在nginx反向代理时, 用/api将接口请求转发到后端服务的服务器
版本控制
将api的版本号放在url内, 如: domain/api/v{n}
- 版本号使用
整形
表示大版本功能
接口, 使用浮点型
表示补充功能版本
接口 - 为了避免版本混乱, 建议最多保留3个版本
如果使用了版本控制, 可以无需使用/api
前缀, nginx反向代理只需要用正则匹配/v\d+/
即可匹配路由前缀
尽可能使用restful
请求方式 request method
请求方法 | 动作 | 说明 |
---|---|---|
GET | SELECT | 获取资源(object / array) |
POST | CREATE | 新建资源 |
PUT | UPDATE | 更新资源(客户端提供改变后的完整资源) |
DELETE | DELETE | 删除资源 |
URI规则
- URI中不包含动词, 只有名词
每个uri表示一个资源, 结合请求方法, 说明具体对该资源的具体操作(如: 新建 or 删除)
- 当资源为数组时, 使用名词复数
一眼看过去就知道是对多个数据进行操作了
分页
尽量使用后端分页, 避免前端假分页
- 减少服务端处理获取到的大量数据的处理压力
- 可通过缓存前几页数据, 减少服务器压力和提高接口响应速度
- 减少前端在处理大量数据时, 避免页面出现卡顿的现象
分页参数建议使用:
参数名 | 说明 | 默认值 |
---|---|---|
pageIndex | 第几页 | 1 |
pageSize | 每页显示多少条数据 | 20 |
示例: /api/books?pageIndex=1&pageSize=20
接口响应
response返回如下所示
{
status: 200, // http状态码, 详情可见文末的相关链接中的【http状态码】
data: {
code: 10000, // 返回码, 详情后面的【接口返回码】部分会说
data: {} || [], // 数据,
message: '成功', // 存放响应信息提示,显示给客户端用户【须语义化中文提示】
},
}
接口返回码
首先, 接口返回码是指返回的data
中的code
, 而不是接口状态码
, 这里要注意区分一下!
返回码 | 说明 |
---|---|
2xxxx | 接口调用成功 |
20000 | 接口调用成功 |
20001 | 接口调用成功, 但接口无数据返回, 特殊情况排查问题用 |
4xxxxx | 权限问题 |
41xxx | 授权令牌相关问题 |
41001 | 缺少授权令牌参数 |
41002 | 无效的授权令牌 |
41003 | 授权令牌已过期 |
41004 | 授权令牌有效且未过期, 但非当前接口/功能的授权令牌 |
42xxx | 签名问题 |
42001 | 缺少签名参数sign |
42002 | 缺少签名方法参数method |
42003 | 缺少时间戳参数timestamp |
5xxxx | 其他参数问题 |
51xxx | 其他参数缺失 |
52xxx | 参数校验类型不通过 |
53xxx | 参数校验通过, 但数值范围不通过, 如, gt, max等 |
54xxx | 用户相关参数问题 |
54001 | 账号/密码错误, 主要是登录/鉴权时用, 这里不细分是账号不正确还是密码不正确 |
54002 | 用户不存在 |
54003 | 用户已冻结/注销 |
6xxxx | 调用限制 |
60001 | 当前ip无权范围(限制ip) |
60002 | 当前接口调用超频 |
9xxxx | 系统其它异常 |
90001 | 系统其它异常, exceptionHandler统一捕获的其他异常 |
相关链接
http状态码
支付宝 > 文档中心 > 开放平台 > 技术接入指南 > 应用开发 > 公共错误码
腾讯云 > 云服务器 > 文档中心 > API 中心 > 云服务器 > 错误码
更多推荐
已为社区贡献1条内容
所有评论(0)