当前位置: 首页 > article >正文

HTTP API接口设计规范

1. 所有请求使用POST方法

  • 使用post,相对于get的query string,可以支持复杂类型的请求参数。例如日常项目中碰到get请求参数为数组类型的情况。

  • 便于对请求和响应统一做签名、加密、日志等处理

2. URL规则

  • URL中只能含有英文,使用英文单词或简称,不要使用汉语拼音

  • 所有字符使用小写字母

  • 多个单词之前使用连字符-分隔,如third-login, 不要使用thirdlogin,thirdLoginthird_login

  • URL的path部分使用 系统/模块/操作 的格式,如 ims/video/list

    • 系统,表示这个接口是微服务中的哪个服务,可使用简称
    • 模块,表示系统的子模块。模块名字使用名词全称,且使用单数形式
    • 操作,表示具体的接口,使用动词+名词的形式,需要考虑单复数。比如add-user,list-users,delete-users

3. HTTP头部

  • 将具体业务无关的数据放在HTTP headers
  • 后端系统可以在不涉及请求和响应体的情况下,处理一些公用逻辑

4. 请求和响应体

  • 使用utf-8编码
  • JSON格式
  • 如果需要加密,可以将正常的JSON加密后用base64编码

5. HTTP状态码

  • 业务的处理结果不体现在http状态码,由响应体的错误码字段表示
  • 只是有部分http状态码表示业务无关的响应,例如
    • 200: 业务已处理,但是处理成功还是失败由响应体表示
    • 400: 错误的请求,多用在请求参数验证。客户端开发要保证向服务器提交正确格式的请求
    • 401: 认证失败,一般没有token或者没有token过期
    • 403: 没有权限调用这个接口。客户端应该隐藏用户无权限的操作
    • 500: 服务器异常

6. 字段命名

  • JSON来自javascript语言,所以字段命名遵循javascript语言,使用 lowerCamelCase 小骆驼拼写法
  • 不要使用下划线链接的 snake_case

7. 数据类型

常用数据类型映射

  • bool:映射为 string,使用Y表示true,N表示false
  • int: 映射为number
  • long: 映射为string,因为js的number类型能处理的数值范围不够,实际项目中会导致各种奇怪的问题
  • float, double, decimal: 映射为string
  • 日期、时间:映射为string

注意:

  • 表示ID概念的字段,统一使用string
  • 数据传输时,如果某个字段为空值,直接省略这个字段不传,减少网络开销
  • 响应体业务数据包含多个数据结构时,优先使用嵌套格式,例如下面这个用户创建的消息
 "item": {
      "num_iid": "520813250866",
      "title": "三刃木折叠刀过安检创意迷你钥匙扣钥匙刀军刀随身多功能小刀包邮",
      "desc_short": "",
      "price": 25.8,
      "total_price": 0,
      "suggestive_price": 0,
      "orginal_price": "25.80",
      "nick": "欢乐购客栈",
      "num": "832",
      "min_num": 0,
      "detail_url": "http://item.taobao.com/item.htm?id=520813250866",
      "pic_url": "//img.alicdn.com/imgextra/i4/2596264565/TB2p30elFXXXXXQXpXXXXXXXXXX_!!2596264565.jpg",
      "brand": "三刃木",
      "brandId": "4036703",
      "rootCatId": "50013886",
      "cid": "50014822",
      "favcount": "4824",
      "fanscount": "1469",
      "crumbs": [],
      "created_time": "",
      "modified_time": "",
      "delist_time": "",

8. 响应体格式

  • code 业务处理的错误码,使用简短的能够体现错误种类的英文单词表示,使用大写字母,使用下划线分隔单词。不建议用数字表示错误码,用数字表示需要额外维护错误码表。

 


http://www.kler.cn/news/10443.html

相关文章:

  • java ssm学生网上作业提交系统
  • 【ROS2指南-15】创建自定义消息统一管理包
  • 【grpc03】proto文件介绍
  • SQL的函数
  • centos新系统新挂载原硬盘方法
  • SpringMVC基本注解的使用和理解
  • OA系统的功能和作用是什么(OA系统百科)
  • cube-studio AI平台 提供开源模型示例列表(3月份)
  • 数据治理之元数据管理
  • Golang 多版本安装小工具G
  • 2023MathorCup数模A题思路数据代码论文【全网最全分享】
  • Python轻量级Web框架Flask(5)——Flask模型基础和数据迁移
  • 2023年MathorCup数学建模C题电商物流网络包裹应急调运与结构优化问题解题全过程
  • 2023-04-16 学习记录--C/C++-邂逅C/C++
  • 这篇文章价值很大:股票历史分时成交数据怎么简单获取?【干货】
  • 2023年七大最佳勒索软件解密工具
  • C#基础复习
  • 轨道交通信号系统介绍
  • 学术论文句式整理(持续更新中)
  • 【C++进阶】function和bind及可变模板参数
  • SpringBoot使用Spring Validation案例
  • AXI write data在Write data channel的排布
  • HR:面试官最爱问的linux问题,看看你能答对多少
  • 推荐一款 AI 脑图软件,助你神速提高知识体系搭建
  • C++中的类模版
  • 已知原根多项式和寄存器初始值时求LFSR的简单例子
  • C学习笔记1
  • 【安全与风险】恶意软件:概念、攻击和检测
  • 走进小程序【七】微信小程序【常见问题总结】
  • 反序列化渗透与攻防(二)之Java反序列化漏洞