对于web程序员来说,http肯定是一块比较重要的地方,本章说下http的状态码。ps:详细了解http部分,建议读《http权威指南》,这是圣经了对于http,不过如果你是新手,对这一块不是很熟悉的话,我的建议是先读《图解http》,再去读《权威指南》。我这块就是参考图解http写的。
http状态码
一.类别
类别 | 说明 | |
1xxx | informational(信息性状态码) | 请求正在请求 |
2xxx | success(成功) | 请求正常处理完毕 |
3xxx | redirection(重定向) | 需要附加操作来完成请求 |
4xxx | client error(客户端错误状态码) | 服务器无法处理请求 |
5xxx | server error(服务器错误状态码) | 服务器处理请求出错 |
类别就是上面几种,下面具体说说各个状态码
二.状态码详解
目前状态码的总数很多,我这里说说常用的几种
200 ok,这个就不说了,表示请求完成,但是对于各个http方法还是有点区别,比如get是请求实体会返回,但是用head方法的话,响应是只返回首部的
204 no content ,这个表示请求也成功了,但是不含实体主体部分,也不允许返回实体部分,一般用来客户端向服务端发送信息,而对客户端不需要发送新的信息
206 partial content,这个比较特殊,是属于对资源的一部分请求,这个用来比如图片之类的咯上次我请求了一部分突然断掉了,这次我只要后半部分之类的,不过这个需要加上content-range来说明
301,302,303,307,这几个其实都是表示重定向,但是是有区别的,一般的用的比较多的就是301,302,301:表示永久重定向,302表示临时重定向,
303和307感觉上是302的变种,用的比较少,我遇到的次数也不是很多,简单说下区别,303表示希望用get方式获取资源(不知道是不是所有人都遵循这个规则),307会根据浏览器要求不会从post变为get,对了301和302明确表示不希望从post变为get访问
还有个304需要说明下,304跟重定向无关,表示允许访问服务器,但未满足的情况下,不返回任何实体
400 bad request ,一般返回表示服务器无法理解这个请求,应该是出错了,需要客户端修改内容后发送
401 unauthorized,表示没有权限,需要认证,一般这个我写rest API时候有时候会用这种方法
403 forbidden,表示被服务器拒绝了,一般不会给你原因,但是若是想会在返回的实体里面写的
404 not found,这个就不说了
500 internal server error,这个也不说了
503 service unavailable,表示服务器暂时不可用,停机维护之类的,不过你要是作为后端知道啥时候恢复的话,在返回的实体里面加上RetryAfter更好了
对于状态码和状况不一致的情况,也是经常遇到的,这个就需要自己去判别了。。最后安利一个工具,如果你只想看statusCode的话,谷歌下有个扩展叫Http Status。。