为什么后端开发都喜欢自己定义 responseCode? HTTP 状态码不够用吗?

2020-05-29 14:10:45 +08:00
 watanuki

所有请求都返回 200,然后自己定义 responseCode, 好像很多大厂的后端接口都是在这样做的,这样做有什么好处? 现在后端开发是不是已经有了关于 responseCode 的统一标准?还是一个公司一套标准? 如果没有统一标准,大家在开发个人的后端项目时也会用 responseCode 吗?

27936 次点击
所在节点    程序员
216 条回复
cs419
2020-05-30 07:01:42 +08:00
小孩子才做选择题
lscho
2020-05-30 11:01:01 +08:00
@no1xsyzy #132 是认真的吗?你这样不还得判断字符串吗? 404 不只是后端会给你,路由器、运营商、设备都有可能给你,不做判断了吗?
mikicomo
2020-05-30 11:01:03 +08:00
我们同时保留了 httpcode 和 errerCode

httpcode 400
errorCode 40010100 规则:{httpcode}{业务 code}{错误 code}
sayitagain
2020-05-30 11:14:19 +08:00
@jzmws 哈哈哈,我司返回格式和你惊人的一致,不过我们是 code=1 表示成功
LichMscy
2020-05-30 11:54:14 +08:00
因为我们会对项目的接口统计 SLA,平台今年的 KPI 要求五个 9 的可用率,出现 4xx5xx 就会影响,所以所有的请求都 2xx 了。
yinzhili
2020-05-30 12:07:00 +08:00
楼主肯定没做过后端业务系统,所以才有这样幼稚的想法。
pkwenda
2020-05-30 12:16:34 +08:00
@LichMscy #165 牛,还能这样
tonyaiken
2020-05-30 12:55:42 +08:00
@littleylv 当然是 400 了
no1xsyzy
2020-05-30 13:31:05 +08:00
@lscho #162 你觉得后端哪个路由判断不是字符串? JSON 不也是字符串吗?
而且真要说这是符号判断而不是字符串判断,当然这确实有点 Lisper 味在。
现在全网都在说必须上全站 HTTPS,路由器、运营商能给你个 404 真挺不容易的,至于你说的设备是啥我没头绪。
至于前台服务器返回 404 本身要么仍然正确,要么就是配置错误,不单独静态目录的话,try_files 最后还是要带上反代后台的。
lscho
2020-05-30 13:40:02 +08:00
@no1xsyzy 抱歉我的描述不清楚,让你误解了。。我其实想了解一下#128 楼这种需求如何解决?就是注册时用户名已存在,同时后端给出推荐用户名。
JokeEnd
2020-05-30 13:46:11 +08:00
上次看到类似的贴蔡徐坤还没出道
Resource
2020-05-30 13:50:26 +08:00
为什么前端开发都喜欢自己造轮子? jQuery 不够用吗?
no1xsyzy
2020-05-30 13:53:46 +08:00
@lscho #170 推荐的用户名采用单独一个 API 提供,还可以点一下切换一批
不过仍然,这是个奇美拉。
imn1
2020-05-30 13:56:50 +08:00
我一直很希望 404 能说清究竟是 dns 问题,还是服务器找不到 path 问题

楼主没做过后端吧?
wingoo
2020-05-30 13:58:06 +08:00
php, restapi, design pattern, 堪称三大吵架经典
===
对 rest 有啥看法?
1.遵循公司规范
2.没有的话, 前后端商量规范
lscho
2020-05-30 14:34:32 +08:00
@no1xsyzy 不是,还是我描述的不清楚吗?用户名存在之后你是通过什么决定前端去请求推荐用户名 api 呢?就通过接口是 404 吗?那我换一种说法。。比如常用登录地匹配上的话可能要提示用户是否需要直接登录或者找回密码,没有匹配上则要给出推荐用户名,这种如何实现呢?
还有全站 https 和 404 没有什么关系啊,我的意思是只要能影响你 dns 的,都有可能给到 404 的结果。api 服务升级,导致 path 变化也可能导致老版本客户端 404 的。或者域名发生变化也有可能 404 。这么多情况下,客户端如何记录日志呢。
AlisaDestiny
2020-05-30 16:17:53 +08:00
有人说 http status code 不够明确可以在 body 中加具体消息,那给这个具体消息加一个 identification code 不是更好吗?就像数据库里不管用不用得上都加一个主键一样。
cz5424
2020-05-30 16:28:52 +08:00
@no1xsyzy 运营商给 302 挺正常的,为了广告(笑
tohuer00
2020-05-30 16:52:05 +08:00
真是服了有些人,在学校做了几个课程设计就能来杠出一堆一堆的。都以为自己是天才,就自己掌握了真理。
avalon0624
2020-05-30 19:25:25 +08:00
可能有些后端没学过 HTTP 协议

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

https://ex.noerr.eu.org/t/676678

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

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

© 2021 V2EX