接口定义规范

版本 更新日志 备注
1.0.0 2019-01 接口定义规范首版本
1.1.0 2019-12 接口定义规范更新1.1.0

一、版本控制

https://gateway.eazytec-cloud.com/{app_name}/v{n}/{module}

  • 应该将API的版本号放入URL。
  • app_name代表项目的名称。
  • module代表具体的业务模块,如用户模块,产品模块。
  • 采用多版本并存,增量发布的方式。
  • n代表版本号,分为整型和浮点型
    • 整型: 大功能版本, 如v1、v2、v3 ...
    • 浮点型: 补充功能版本, 如v1.1、v1.2、v2.1、v2.2 ...
  • 对于一个 API 或服务,应在生产中最多保留 3 个最详细的版本
  • URL请求中不采用大小写混合的驼峰命名方式,尽量采用全小写单词,如果需要连接多个单词,则采用连接符“_”连接单词

二、请求方式

2.1 HTTP动词

  • GET(SELECT) 从服务器取出资源(一项或多项)
  • POST(CREATE) 在服务器新建一个资源
  • PUT(UPDATE) 在服务器更新资源(客户端提供改变后的完整资源)
  • PATCH(UPDATE) 在服务器更新资源(客户端提供改变的属性)
  • DELETE(DELETE) 从服务器删除资源
2.2 举例
  • GET /zoos 列出所有动物园
  • POST /zoos 新建一个动物园
  • GET /zoos/{id} 获取某个指定动物园的信息
  • PUT /zoos/{id} 更新某个指定动物园的信息(提供该动物园的全部信息)
  • PATCH /zoos/{id} 更新某个指定动物园的信息(提供该动物园的部分信息)
  • DELETE /zoos/{id} 删除某个动物园
  • GET /zoos/{id}/animals 列出某个指定动物园的所有动物
  • DELETE /zoos/{id}/animals/{id} 删除某个指定动物园的指定动物
2.3 注意
  • 要防止出现如下这种的路径冲突
    • GET /people/{deptid} 列出某个部门的所有人员
    • GET /people/{categoryid} 列出某个类别的所有人员
  • 应该改为如下的这种形式
    • GET /dept/{deptid}/people 列出某个部门的所有人员
    • GET /category/{categoryid}/people 列出某个类别的所有人员
2.4 GET与POST对比
GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded或multipart/form-data,为二进制数据使用多重编码
历史 参数保留在浏览器历史中 参数不会保存在浏览器历史中
对数据长度的限制 是的,当发送数据时,GET方法向URL添加数据;URL的长度是受限制的(URL的最大长度是2048个字符) 无限制
对数据类型的限制 只允许ASCII字符 没有限制,也允许二进制数据
安全性 与POST相比,GET的安全性较差,因为所发送的数据是URL的一部分。在发送密码或其他敏感信息时绝不要使用GET POST比GET更安全,因为参数不会被保存在浏览器历史或web服务器日志中
可见性 数据在URL中对所有人都是可见的 数据不会显示在URL中

2.5返回结果

  • GET /collection 返回资源对象的列表(数组)
  • GET /collection/resource 返回单个资源对象
  • POST /collection 返回新生成的资源对象
  • PUT /collection/resource 返回完整的资源对象
  • PATCH /collection/resource 返回完整的资源对象
  • DELETE /collection/resource 返回一个空文档

2.6 过滤信息

  • ?limit=10 指定返回记录的数量
  • ?offset=10 指定返回记录的开始位置
  • ?page_num=2&page_size=100 指定第几页,以及每页的记录数
  • ?sortby=name&order=asc 指定返回结果按照哪个属性排序,以及排序顺序
  • ?animal_type_id=1 指定筛选条件
江苏卓易信息科技股份有限公司-TNG基础平台组 all right reserved,powered by Gitbook该文件最后修改时间: 2021-01-27 06:23:28

results matching ""

    No results matching ""