1
michaelcheng 2018-08-02 10:32:40 +08:00
说不准,公司业务里是没有直接用 http status, 自己定义了自己的响应规范
|
2
casztg 2018-08-02 10:40:43 +08:00
看公司的习惯来把,HTTP 协议是套规范,一切以实际为准。
|
3
killerv 2018-08-02 10:41:30 +08:00
如果业务比较复杂,http code 可能不够用
|
4
TommyLemon 2018-08-02 10:42:01 +08:00
HTTP 协议里定义了 status 和 message,
但是都是在 Response Header 里返回的,设置和查看都不方便, 所以一般就和数据一起封装到 Response body 里了 |
5
owenliang 2018-08-02 10:46:05 +08:00 1
依靠 HTTP 状态码表达的方式,属于 REST API 范围。
一般 open api 采用 REST,公司内 RPC 与公司内 client 与 server 一般不完全遵守 REST,也就是统一 200 表示正常,并用 payload 里的 errno 之类的表达错误。 |
6
sorshion 2018-08-02 11:20:26 +08:00
标准 restful 推荐用 http 状态码,自己定义的,统一就好
|
7
ChristopherWu 2018-08-02 11:28:28 +08:00 2
http code 2xx, 5xx,3xx 只是表明了这个 http 请求的状况如何,与你的业务没有挂钩。
http 请求可以成功,不代表业务成功了,所以你的业务需要制定另外的一套状态码,来与前端沟通此业务操作的状况。(不是儿戏的项目都需要,对吧?) |
8
ChristopherWu 2018-08-02 11:29:27 +08:00
另外如果你的业务状态码与 http 状态码 重合,也不是 best practice.
很容易在沟通上出现误会。 |
9
huiyue 2018-08-02 11:34:06 +08:00
API 返回结果如果涉及业务,不建议用 http status 来。
|
10
duxinglangzi 2018-08-02 11:56:27 +08:00
我认为单纯的讲 API 返回的 code 字段值,还是自定义的比较好。http status 是表示网络访问状态。我觉得和业务上的 code 码最好不要 混在一起,不好分辨。 另外可以参考一下 腾讯微信公众号文档设计规则。
|
11
HuHui 2018-08-02 12:12:42 +08:00
返回一个 404 呢?
|
12
zpfhbyx 2018-08-02 12:14:15 +08:00
业务模块 id+http 响应码 100200 这种- -,
|
13
sampeng 2018-08-02 12:21:24 +08:00
我更倾向有明确符合 http 协议的。用 http 头里的 status。再结合 body 力的 status 表示更多的含义。。。
比如 401.这个错误。再结合 body 里的 status。就能明确是客户端错误。 有些客户端只用处理 4XX 的就行了。其他的 5XX 的直接返回错误信息就好了。不用做太多处理。 如果是只有 body 的 status。所有的都得判断。。对客户端挺不友好的。 关键是从语义上更清晰一点。 |
14
MeteorCat 2018-08-02 12:23:35 +08:00 via Android
按需求来选择 rest,最怕 nginx 排查的时候一堆奇怪的响应码
|
15
swcat 2018-08-02 12:33:30 +08:00 via iPhone
http code 表示网络状态,接口是业务层的,最好不要混用,
有可能 http code 不够用 而且想过运营商劫持非成功响应吗🤣, 当然具体情况具体分析,如果是内部用,都不存在的,这种东西约定好就行 |
16
yujieyu7 2018-08-02 12:33:37 +08:00
从逻辑上来讲,http 状态码是来标识 http 请求状态的,就不要把业务状态强加进去了,这完全是两个领域的事情。
另外,复杂业务下,那状态码根本不够用呐。 事实上绝大部分公司还是用自己定义的业务码来返回的 api 调用情况的。阿里 api,百度 api 等等,无一例外 |
17
leafiy 2018-08-02 12:54:53 +08:00
逻辑上讲怎么都对,实际情况是 3 楼,比如 409 就不够用的。。。。
|
18
xcstream 2018-08-02 12:56:49 +08:00
code 200 表示正常
|
19
jianpanxia 2018-08-02 13:32:59 +08:00
一起用.
|
20
whileFalse 2018-08-02 13:37:43 +08:00
作为运维提一句,我们在负载均衡器层做了 http status code 的统计。4xx 5xx 我们会统计出来给到开发检查业务问题。
如果开发用 4xx 表达正常业务信息……嗯那是他们自己的事儿我们也管不着。 |
21
YMB 2018-08-02 13:39:13 +08:00
这么说吧,现在的 APP,支付宝和掌上英雄联盟用的是自定义的 code
|
22
kmahyyg 2018-08-02 14:23:03 +08:00 via iPad
15 楼正解, 你要考虑运营商劫持问题. 所以, http 200 返回 status != 0 才行.
|
23
lygmqkl 2018-08-02 15:34:17 +08:00
200/400/401/403/404, 然后针对 01 03 04 在扩展下属错误码吧。。。
|
24
GTim 2018-08-02 20:46:27 +08:00
推荐使用两者的结合
1. HTTP 响应状态码的含义是 HTTP 的状态,准确的说是远程资源打交道时的状态信息,不能反映程序的内部状态 2. 如果只使用自定义的,则客户端应该将 200 以外的状态码都视为错误才可 一般情况下,就看你自己的意思,如果对整个技术的掌控力度比较强,完全可以只用 HTTP 状态码 但是,但是,我偏偏选择了最小资源集合,就是只接收 200 状态码和只支持 POST 请求,只为减少团队成员犯错的可能性 |
25
lrh3321 2018-08-03 08:00:19 +08:00 via Android
不推荐用 http status。
之前错误码定义了个 5xx,结果 nginx 先傻了,排查了半天。 |