后端 response code 该怎样返回?

2021-10-18 18:42:01 +08:00
 hlayk

前提:前后端定义了通用的数据结构包含 data,mseeage,code,success 这几个基本字段用来去接收后端接口的数据。

场景:某一接口客户端发出的请求出现参数或后端校验等业务错误

问题:后端 http 层的 response code 应该返回什么? 200 还是非 200 ?(呆过的不同公司有着不一样的习惯)

问题来源:主要是用的网络请求框架( retrofit ),对于小于 200 或者大于等于 300 的 response code 直接抛了异常,但我并不想对这异常再进行解析 HttpException 中的 response body 解析出上述的数据结构,所以我拦截了 response 改了 response code 为 200 。这样的话,我对于 response code 无论是什么,我都可以同样的对象解析。

4621 次点击
所在节点    程序员
44 条回复
zachlhb
2021-10-21 08:10:26 +08:00
http code 永远返 200,然后错误码用自己数据的 code 区分,为什么不用 http code,因为一些前端框架拿不到非 200 的响应数据,非 200 响应在前端来看就是异常,直接走前端框架的异常处理了
bug123
2021-10-21 08:11:13 +08:00
0 表示成功
非 0 表示错误码,message 作为额外的补充
hlayk
2021-10-21 09:21:42 +08:00
@zachlhb 是的 问题就在这里 返回的响应结果本身就是同一个数据结构 但是因为 http code 非 200 导致框架抛出异常 我这里就需要额外捕获异常 再从异常中解析 response 这在我这里看来就是多此一举 但是我也没有合适的理由去说服后端去改 http code 所以加了拦截器 将后端所有的 http code 改为了 200 以便统一处理
flyingfz
2021-10-21 11:19:07 +08:00
http 协议相关 的状态码, 交给 status code . 例如 无权限 403, 找不到资源 404,参数错误 400 之类.

业务的状态码交给 code, 例如登陆失败, 扣款失败。注意, 此时 status code = 200 .

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/808610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX