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