除了 200 和 404 你们还会主动返回其他的 html status code 吗

2016-07-25 10:56:57 +08:00
 gearh
今天看一个 web 框架的官方 demo 里
数据验证失败的时候回返回 status code 422
所以我在想有没有必要完全按照 html status code 的定义返回
7972 次点击
所在节点    程序员
80 条回复
lslqtz
2016-07-25 21:54:56 +08:00
@ixiaozhi 好评,以后参数不正确就发回一个这个 2333
guodont
2016-07-25 21:58:51 +08:00
201 401
simple_plan
2016-07-25 22:05:29 +08:00
400 403
SlipStupig
2016-07-25 22:44:44 +08:00
if( http_code > 400):
# Raise ERROR

else:
pass
seeker
2016-07-26 01:11:39 +08:00
强迫症表示必须严格按照 rfc 返回值。
AbrahamGreyson
2016-07-26 03:45:09 +08:00
其它的都是程序自动 throw 的。
jyf007
2016-07-26 06:13:50 +08:00
在某司前端边上干活,记得是 404 会被运营商劫持
lslqtz
2016-07-26 06:34:14 +08:00
@jyf007 在我们这 5**系列也会。。
Symars
2016-07-26 07:22:12 +08:00
500
spikeLIN
2016-07-26 08:26:51 +08:00
@Kirscheis 那用户怎么访问啊
mgna17
2016-07-26 08:42:41 +08:00
423 locked😁
yalay
2016-07-26 09:11:02 +08:00
304 是很有用的啊,省带宽啊。
gevin
2016-07-26 09:12:29 +08:00
如果是写 RESTful API ,以下情况分别返回这些 status code:

当 GET, PUT 和 PATCH 请求成功时,要返回对应的数据,及状态码 200 ,即 SUCCESS
当 POST 创建数据成功时,要返回创建的数据,及状态码 201 ,即 CREATED
当 DELETE 删除数据成功时,不返回数据,状态码要返回 204 ,即 NO CONTENT
当 GET 不到数据时,状态码要返回 404 ,即 NOT FOUND
任何时候,如果请求有问题,如校验请求数据时发现错误,要返回状态码 400 ,即 BAD REQUEST
当 API 请求需要用户认证时,如果 request 中的认证信息不正确,要返回状态码 401 ,即 NOT AUTHORIZED
当 API 请求需要验证用户权限时,如果当前用户无相应权限,要返回状态码 403 ,即 FORBIDDEN

这些是我写博文『 RESTful API 编写指南』时总结的,付个文章链接: http://blog.igevin.info/posts/restful-api-get-started-to-write/
lslqtz
2016-07-26 09:25:57 +08:00
@gevin Good !
ppwangs
2016-07-26 13:49:29 +08:00
@gevin 推荐
状态码对 restful 很有用。
gearh
2016-07-26 15:58:12 +08:00
感觉论坛的口风和一年前有点不一样啊
https://ex.noerr.eu.org/t/191534
pathbox
2016-07-26 21:58:27 +08:00
666
timothyqiu
2016-07-27 08:57:00 +08:00
会啊,常用的:

+ 200 成功
+ 201 成功创建( POST 请求)
+ 202 朕知道了(比如成功接受异步请求,请求结果通过另一个接口查看)
+ 204 不用找了,没有响应内容
+ 400 请求格式错误(请求与文档要求不符,比如要求给出的字段没有给出,或者要求给有效 json 但解析出错)
+ 401 身份未知(比如没有给出 Token 或者 Token 过期)
+ 403 该身份无权限访问该资源
+ 404 资源不存在
+ 415 媒体类型不支持(比如要求请求是 application/json ,但请求实际是 text/plain )
+ 422 无法处理(相对于 400 / 415 是请求有硬伤, 422 是请求格式都对,但由于逻辑上不支持而导致的失败)
+ 429 请求过于频繁

服务器按照语义返回。客户端一般可以按照百位处理,业务逻辑需要时才针对特定的状态码做处理。
baiyi
2016-07-27 09:22:41 +08:00
@gevin @timothyqiu
学到了!
chinvo
2016-07-30 19:17:37 +08:00
@just4test 只判断一次 HttpException 就好,然后判断具体错误码。在前端或者 app 里面把后端逻辑报错当作异常来处理就好。

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

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

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

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

© 2021 V2EX