对于http响应码的一些总结

43 阅读2分钟

本人对于http响应码的一些总结和理解

http状态存在的五大意义(为什么要设计这些状态响应)

  • 1.即时反馈 打破黑箱通讯 如果没有状态码长时间没有收到消息都不知道出了什么问题
  • 2.责任分明 明确是哪里出了问题 4xx是客户端的问题 5xx是服务端的问
  • 3.驱动自动化 机器或者程序上自主决定下一步操作 主要是针对301 304 401 429这类未认证或者重定向的等配合逻辑代衔接处理方法
  • 4.性能上优化 减少宽带浪费,快速失败以前网络很贵简单的状态码标识就能说明原因
  • 5.协议化标准 全球web统一标准,不同国家的程序员不同语言写的代码都能看懂

设计的终极思路还是解耦 协议层和应用层解耦

  • 1.协议层 只关心通讯是否成功 状态码这类状态码是机器可读的
  • 2.业务层 关注实际业务数据 返回的数据+页面人类可读

具体总结和应用

  • 1xx类响应 消息服务端已经收到但还在处理 这类响应码很少直接见到
    • 100 客户端发送大文件确认
    • 101 请求切换协议
    • 102 处理中
  • 2xx类响应 服务端已经收到并成功处理
    • 200 响应成功
    • 201 资源创建成功
    • 202 请求已接受但未完成处理
    • 204 请求成功但是没有实际响应的内容
    • 206 分块传输优化性能
  • 3xx类响应 需要转发重定向的
    • 301 新地址旧地址作废 搜索引擎会更新索引
    • 302 临时重定向
    • 304 资源未修改使用缓存
    • 308 更严格的重定向要求请求的内容和方式都能不改变
  • 4xx类响应 客户请求错误 可能是请求方式 请求路径之类的问题
    • 400 通用客户端错误
    • 401 没有认证 需要token或者token失效
    • 403 已认证但是权限不足
    • 404 请求路径的问题
    • 405 请求方法不被资源支持
    • ‌408 服务器等待请求发送超时
    • 409 资源冲突
    • ‌429 请求过于频繁
  • 5xx类响应 服务器端的问题
    • 500 服务器内部异常
    • 501 服务器不支持该功能
    • 502 网关/代理服务器无法从上游获取有效响应 nginx这类的
    • 503 服务器过载了
    • 504 网关/代理服务器等待上游响应超时