学习笔记 图解HTTP 第4章 HTTP状态码

158 阅读3分钟

实际工作中,前后端合作基本只用get/post,并且都是在200中封装相应的状态码,而没有使用HTTP级别的状态码.所以一般见200/404/500是最多的,其他很少见,见到后就有点不知道是什么用的~

其实不管开始有多麻烦,还是应该按照标准HTTP协议来设计接口,用两次就好了

  • 从外观上,一眼就能看出这个请求是啥结果
  • 再就是很多状态码浏览器会自动进行一些处理

4.1 状态码

状态码的作用是,当客户端向服务端发送请求时,描述返回的结果.由两部分组成

  • 3位数字
  • 原因短语
类别 原因短语
1XX Informational 接收的请求正在处理
2XX Success 请求处理完毕
3XX Redirect 重定向,浏览器需要重新请求
4XX Client Error 客户端错误
5XX Server Error 服务端错误

4.2 2XX 成功

  • 200 OK
    • GET方法时,返回对应实体
    • HEAD方法时不返回实体
  • 204 No Content
    • 成功,但不返回实体
    • 用于修改/或者告诉服务器处理OK,客户端只需要知道服务端是否处理即可
    • 相对于200来说可以减少流量
  • 206 Partial Content
    • 范围请求执行成功
    • 相对于200一次性请求来说,可以节省流量,加快界面显示

4.3 3XX 重定向

  • 301 Moved Permanently
    • 永久变更
    • 返回时要指定新的Location首部字段,浏览器会自动重新定位
    • 用于图片换位置/接口路径变更
  • 302 Found
    • 临时变更
    • 和301的区别在于,客户端做出相应处理的时候,决策可能会不一样
    • 比如一个已保存到收藏夹的链接,跳转新链接后301的话会更改收藏夹,而302则不会
  • 303 See Other
    • 请求的资源对应新的URI
    • 和302的区别在于,明确要求客户端用GET方法访问新的URI
    • 可用于高延时数据下载,发送一个请求,服务端返回一个新的链接,客户端几十秒后自己访问新链接
  • 304 Not Modified
    • 服务端资源未改变,直接使用客户端缓存
    • 发送请求时可附带条件,比如查找3天内更新的资源等,支持如下请求首部字段
      • If-Modified-Since
      • If-Non-Match
      • If-Range
      • If-UnModified-Since
  • 307 Temporary Redirect
    • 和302一样
    • 区别在于不会要求使用GET访问新URI

4.4 4XX 客户端错误

  • 400 Bad Request
    • 请求参数错误
  • 401 Unauthorized
    • 未授权
    • 用于未登陆/登陆过期
  • 403 Forbidden
    • 访问被拒绝
    • 用于权限不够的情况下
  • 404 Not Found
    • 资源不存在

4.5 5XX 服务端错误

  • 500 Internal Server Error
    • 服务器端bug
  • 503 Service Unavailable
    • 服务器挂了
    • 服务器运算大/或正在维护