今天简单讲讲使用HTTP协议的RESTFUL接口返回结果对像设计,单体应用前后对接口方式都是使用RESTFUL风格,在工作这么多年里,每一个公司 RESTFUL接口返回结果结构风格都不一样,在想为什么会这样,没有一些统一完整的标准规范。
例如:比较常见的result:{status,msg,data},然而使用status值类型竟不相同,有人用 int,有人用 string,个人选择用 int,占有4个字节,原因简单明了的状态码,使用数字描述更简单,其实status这字段也有人使用 status
code结果值反馈也不相同,有用1表示成功,非1表示失败,有用200表示成功,非200表示失败,个人选择 200 表示成功,非200表示非成功,原因这个符合浏览器的 status值。
另外 result中的三个字段能不能诠释出这个接口的所有信息,data表示返回结果值,如果当非正常情况下,接口需要其它的业务信息 ,就没有字段保存,这时会增加一个bizInfo。
当接口异常的时候, msg直接提示出程序异常信息,客户看见这样的信息一是很奇怪,二是很反感,那应该提示“系统异常,联系管理员”,给出客户明确的指示,那对于开发人员来说,就不能直观快速的定位问题,给于客户的响应,这时 我个人会增加一个 exception的字段。
还有一个场景就是分页的结果集,分页字段有 pageIndex,pageSize,total,totalPage,那这些字段是放在 data对象里,还是放在 result中,个人的选择会放到 data中,主要依据分页属性不属于所有接口共用的,
结合上面所有情况,得出一个result结果对象结构,实例如下:
{
code:200,
msg:"成功",
data:{
pageIndex:1,
pageSize :10,
total : 21,
totalPage:3
record:[{}]
},
bizInfo:"接口数据",
exception:"空指定"
}