所有请求都返回 200,然后自己定义 responseCode, 好像很多大厂的后端接口都是在这样做的,这样做有什么好处? 现在后端开发是不是已经有了关于 responseCode 的统一标准?还是一个公司一套标准? 如果没有统一标准,大家在开发个人的后端项目时也会用 responseCode 吗?
|  |      201xkzhangsan      2020-05-31 11:05:43 +08:00 HTTP 状态码只能表示请求状态,有时候有多种业务相关的原因,要区分表示,自己定义 responseCode 。 | 
|      202cw2k13as      2020-05-31 11:07:27 +08:00 我们公司会加一层,状态码和错误信息,不然你根本不知道是啥错误,response 本身有非 2 开通状态码的时候你读不到 data 里面的错误信息。用户看你这些不具体的错误描述会抓狂的 | 
|      203deplives      2020-05-31 12:51:00 +08:00 HTTP 状态码是不够用啊,你说我给你个 500 但是情况 1 和情况 2 都有可能出 500 你怎么知道是哪种情况 | 
|      204iX8NEGGn      2020-05-31 14:03:08 +08:00 via iPhone 这个月经贴,谁能讨论出个结果,我叫他爸爸 | 
|  |      205AV1      2020-06-01 09:37:41 +08:00 自定义 responseCode 可以少加班,早睡觉。 因为凡是 4XX 和 5XX 的错误,默认甩锅运维,开发只管吃瓜。 | 
|  |      206fueen      2020-06-01 12:19:06 +08:00 这。。。。 | 
|      207yian5487      2020-06-01 13:45:32 +08:00 不够,下一位 | 
|      208kylix      2020-06-01 16:24:49 +08:00 泡杯咖啡,坐下来慢慢看。。。摸个鱼 . . . 不要给我返回 418 吖 | 
|      209billtsui      2020-06-09 10:51:38 +08:00 你前端用匹配字符串的方式,来做逻辑处理吗?如果这样,当我没说。 | 
|  |      210CallMeSoul      2020-11-10 11:04:23 +08:00 我是前端真心觉得自定义 code 真心麻烦,觉得用 http code 好用点。然后去找了下用自定义 code 的原因。 好像不知 IE 几时代 http 错误会弹出来影响用户,所以就全 200,在自定义。算是历史遗留问题吧。 然后用自定义 code 的不好: | 
|  |      211CallMeSoul      2020-11-10 11:13:28 +08:00 然后用自定义 code 的不好: 1 。多一层判断,比如 if(res.code) 和 if(res.data.code) 一两个接口没区别。100 个接口有量变了。 2 。每个项目组每个公司或者每个后端开发者的自定义 code 都不统一,容易造成歧义。使用 http code 跟着标准走,无歧义 3. 成功和失败业务逻辑,一般前端都会全局拦截失败逻辑通用的错误,比如 400.然后成功后的逻辑应该再 data 里面对应每个接口去定义。 | 
|  |      213no1xsyzy      2021-01-20 17:32:34 +08:00 @dmen 实际上楼上不少举一些大厂提供的 Web API 均属于此列,比如 xiangwan 在 #113 楼提出的那个。 顺便补充一下,其实有疑似复盘系统…… Sentry,就在 Python 节点右侧站长推荐的 “值得关注的项目” 里…… 但是要注册一个账号有点不太想用,所以也没能验证有多符合我的设想…… | 
|  |      215sankemao      2021-03-04 10:59:26 +08:00 说用 http 状态码的都不是做客户端的 | 
|      216bofei      2024-01-04 19:45:36 +08:00 @SpencerCJH 您好,请问下你们是 直接设置 http Code 吗 还是自己定义一个消息体,里面放这些呢。如果是设置 httpCode ,那 grpc 服务端怎么返回错误呢,是返回 401 还是 UNAUTHENTICATED 呢,返回 UNAUTHENTICATED grpc 客户端处理不了吧 200 OK 无错误。 400 INVALID_ARGUMENT 客户端指定了无效参数。如需了解详情,请查看错误消息和错误详细信息。 400 FAILED_PRECONDITION 请求无法在当前系统状态下执行,例如删除非空目录。 401 UNAUTHENTICATED 由于 OAuth 令牌丢失、无效或过期,请求未通过身份验证 |