流程定义
- 后端编写和维护接口文档,在 API 变化时更新接口文档
- 后端根据接口文档进行接口开发
- 前端根据接口文档进行开发 + 文档平台(需要沟通用哪个文档地址?)
-
职责分离
前后端仅仅通过异步接口 (AJAX/JSON) 来编程
- 前后端都各自有自己的开发流程,构建工具,测试集合
- 关注点分离,前后端变得相对独立并松耦合 | 后端 | 前端 | | —- | —- | | 提供数据 | 接收数据,返回数据 | | 处理业务逻辑 | 处理渲染逻辑 | | Server-side MVC 架构 | Client-side MV* 架构 | | 代码跑在服务器上 | 代码跑在浏览器上 |
协议规范
- GET : 用于从服务器获取资源信息
- POST : 用于创建新资源
返回数据规范
正常格式:
需要定义单个数据、集合数据、可能有可能无数据、分页数据、流数据、二进制数据、认证加密数据。导出表格需采用Blob
的方式实现
异常格式:
数据编码:
Content-Type: application/json; charset=utf-8
状态码
请求成功状态码标识
- 200 : 求执行成功并返回相应数据
- 201 : 创建成功并返回相应资源数据
- 202 : 接受请求,但无法立即完成创建行为
204 : 请求执行成功,不返回相应资源数据
重定向
301 : 被请求的资源已永久移动到新位置
- 302 : 请求的资源现在临时从不同的 URI 响应请求
- 303 : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该使用 GET 方法进行请求
307 : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该保持原有的请求方法进行请求
条件请求
304 : 资源自从上次请求后没有再次发生变化,主要使用场景在于实现数据缓存
- 409 : 请求操作和资源的当前状态存在冲突。主要使用场景在于实现并发控制
412 : 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。主要使用场景在于实现并发控制
客户端请求错误
400 : 请求体包含语法错误
- 401 : 需要验证用户身份
- 403 : 服务器拒绝执行
- 404 : 找不到目标资源
- 405 : 不允许执行目标方法,响应中应该带有 Allow 头,内容为对该资源有效的 HTTP 方法
- 406 : 服务器不支持客户端请求的内容格式
- 410 : 被请求的资源已被删除
- 413 : POST 或者 PUT 请求的消息实体过大
- 415 : 服务器不支持请求中提交的数据的格式
- 422 : 请求格式正确,但是由于含有语义错误,无法响应
428 : 要求先决条件,如果想要请求能成功必须满足一些预设的条件要求先决条件,如果想要请求能成功必须满足一些预设的条件
服务端错误
500 : 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理
- 502 : 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
- 501 : 服务器不支持当前请求所需要的某个功能
503 : 由于临时的服务器维护或者过载,服务器当前无法处理请求
{
"code":"200", // 1.成功为200, 2.其他非200
"data": {
"currPage": 1,
"datas": [
{
"name":"张三",
"age":"20"
}
],
"total": 20,
"totalPage": 2
},
"message":"成功", // 1.成功信息, 2其他返回对应信息
}
URL规范
http://bapi.qa.zktsoft.com/项目名称/菜单名/接口名称 //QA环境
http://bapi.t.zktsoft.com/项目名称/菜单名/接口名称 //预发环境
https://bapi.zktsoft.com/项目名称/菜单名/接口名称 //生产环境
不能使用大写,用小驼峰命名;传参同样;
- 接口名称,首字母可以用动词来标识干什么的,获取get,保存save,更新update,删除delete等。
- 传参如何未有值,类型为空字符串,其他类型不适用。分页传参固定pageSize,pageIndex;接口返回如果字段未有值,请选择类型为空字符串,其他类型不需要,并返回。