系统服务化构建-状态码设计要点

Code状态码码是接口设计中的常见概念,本文主要讨论接口开发中Code码设计。从客户端和服务器端开发的角度,给出具体的工程实践建议和思考。

从笔者之前的一份接口文档定义开始说起,文档中定义的服务端接口输出格式如下

接口输出格式

返回数据由两部分构成,第一部分是对结果集的说明,第二部分是data节点

{
    "code": 4302,

    "message": "no sign",

    "time": 1487832032,

    "data": []
}

第一部分,无论错误与否,都会有如下片段。

code:信息代号

message:信息描述

time:接口返回时间

第二部分是具体数据如下:

data节点

我们可以 看到code=4302,4302并不是一个HTTP 协议状态码,而是一个业务状态码,是业务领域的含义,并非我们常见的HTTP 协议层面的响应状态码。

业务状态码与HTTP 状态码

在REST 接口设计规范中,我们通常都会被引导为这里的Code 应该是HTTP 协议状态码 200,404 或者501等。

实际上这是实践中的一种折中的方式,Code 会包含HTTP状态码和业务状态码

业界为什么会有这种实践,与客户端的解析数据方式有很大关系,下文中会给出答案。

说到这里,我们引出了两个概念,一个是业务状态码,一个是HTTP请求状态码。

两个概念很好理解

业务状态码

业务状态码是服务端给出的关于业务描述的码,用于客户端明确得知本次请求的资源的状态情况。上文例子中的4032被认为是一个缺少签名sign的业务状态码。有业务状态码输出表明当次HTTP 请求是通的。

业务状态码是可变的,没有业界标准,是一种资源状态描述,与HTTP响应状态码也不存在对应关系。

如下文图片HTTP-200 显示,接口是通的 HTTP 状态响应返回 200,但是业务没有执行成功,code用1 表示。


  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值