应用中经常会涉及到server和client的交互,目前比较流行的是基于json格式的数据交互。但是json只是消息的格式,其中的内容还需要设计。当接口很多的时候,保持返回值格式统一很重要,因为返回值格式一致,客户端才能相应地做统一的处理
以前有一个产品使用的接口格式还不错,所以也继续带到现在的产品中使用,格式类似:
{
"code":0 ,
"result":{
exist:true ,
count:3
}
}
或者:
{
"code":1 ,
"error":{
errorCode:1003453 ,
errorMsg:"database error"
}
}
响应分为2种情况,正确响应和异常响应。正确响应的code值是0,附带result字段包含响应的详细信息;异常响应的code值是1,附带error字段包含详细的错误信息。result里面具体的内容是接口自定义的
关键是,如何区分“正常响应”和“异常响应”,项目组应该有统一的认识。只要server端的接口,正确地响应了业务,就算是正常响应。例如,对于“该手机号是否允许注册”这个查询接口,“允许注册”以及“该手机号已经被注册”,都应该算是“正确响应”,code值都是0,具体的判断在result里区分;“服务器500错误”以及“查询失败”,这些才是“异常响应”,code值是1,具体的错误信息在error里区分
关键就是,code只应该表示调用是否成功,不应该包含业务含义。不能用code是0还是1来区分用户是否已存在,只能用来表示这次查询是否成功。否则的话,像上面这个接口,如果用code = 1来表示用户不存在,那像网络错误,500错误就只能依赖errorCode来区分了,逻辑会很不清晰
只要所有的接口都遵循这个规则,那么在server端和client端就都可以写一个独立的组件,根据这个规则来包装接口数据