11 回答
TA贡献1951条经验 获得超3个赞
第二种。
第一种只有0和1的话,太单一。遇上需要特殊处理的case就很麻烦。
比如说如果需求是'用户名不存在'要自动跳转到注册页面,而'密码错误'只是提示就好,这时候第一种就会显得不够了
TA贡献1798条经验 获得超3个赞
第一种。
虽然第二种更具体,但是实际上并不一定有啥用,对于用户来说,密码不正确或者用户名不存在反正都是错误,前台要那code并没啥用。
不过如果不是前后端分离情况的话,光code和msg是不够用的,最好加一个url字段,用于前台是否需要跳转。
TA贡献1777条经验 获得超10个赞
其实这个还是看团队吧,比如最近写的一个Api,我前期定义错误返回码:
$map = [
-1001 => '用户名不存在',
-1002 => '密码错误',
-1003 => '验证码错误'
];
采用定义一个这样map错误码,1 001,1代表模块,001代表错误码。只是前台那里只要你不是返回200(约定成功返回200),其他一律都认定错误返回码。其实通过200(成功),-200(不成功)这种简单的也可以,因为你请求出现的异常错误,肯定是在同一个模块下的报错,所以排查起来也不是很麻烦。
一些特殊的状态码,肯定是要约定好的。如token过期需要重新登陆
-100 => '请重新登陆'
这样。
TA贡献1780条经验 获得超1个赞
响应体组成
字段 | 含义 |
---|---|
code | 服务端处理业务后的返回代码,其中包含公共响应代码和当前业务特有代码 组成右 http_code +3位数字,成功 除外,成功使用200 表示,其他的,如客户端请求权限错误 401001
|
msg | 服务端处理后返回给客户端的提示性文字,当然,客户端不应该直接使用此 提示,而是根据code自定义提示语给用户 |
data | 处理业务逻辑后需要返回的数据,必须为一个对象,而非任何标量值 。 |
session | 这里的session并不是传统http中的session,而是单次会话的标识符,因为在 客户端调用API的过程中,难免会遇到数据问题,导致不好调试,所以应该将 所有的请求记录放进去日志,然后当客户端出现问题时根据请求的session来 定位是哪一个会话,然后使用postman对请求进行重放调试,除了请求日志, 还应该保存请求日志 |
公共响应代码
除了业务响应代码,应该还有一些公共响应代码
code | 示例 |
---|---|
200 | 请求成功 |
401001 | 用户身份失效 |
400001 | 请求参数错误 |
404001 | 服务没有数据 |
....
TA贡献1775条经验 获得超11个赞
其实合适的就是好的方案。比如有的项目接口都很简单,不过就是普通的增删改查,没啥复杂逻辑,错误定位简单。前端也不需要告诉用户后端的具体错误内容,就简单提示操作出错、失败就可以了。那么状态码可以很简单,甚至0,1就够了。 大型的项目就需要一开始把各个模块的状态码定义好,方便定位捕捉各种错误类型。
添加回答
举报