关于常见状态码,你了解多少?

作者:坚果

华为云享专家,InfoQ 签约作者,阿里云专家博主,51CTO 博客首席体验官,开源项目 GVA 成员之一,专注于大前端技术的分享,包括 Flutter,小程序,安卓,VUE,JavaScript

大家好,我是坚果,今天在逛github的时候发现一个文档​​HTTP 接口设计指北​​,顺便了解了一下,觉得不错,就把关于状态码的知识整理了一下,大家喜欢的话,可以去阅读原文,获取更多细节。

请求成功2xx

  • 200​OK​: 请求执行成功并返回相应数据,如​​GET​​ 成功
  • 201​Created​: 对象创建成功并返回相应资源数据,如​​POST​​ 成功;
  • 202​Accepted​: 接受请求,但无法立即完成创建行为。
  • 204​No Content​: 请求执行成功,不返回相应资源数据,如​​PATCH​​​ ,​​DELETE​​ 成功

重定向3xx

重定向的新地址都需要在响应头 ​​Location​​ 中返回

  • 301​Moved Permanently​: 被请求的资源已永久移动到新位置
  • 302​Found​: 请求的资源现在临时从不同的 URI 响应请求
  • 303​See Other​: 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该使用​​GET​​ 方法进行请求
  • 307​Temporary Redirect​: 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该保持原有的请求方法进行请求

条件请求

  • 304​Not Modified​: 资源自从上次请求后没有再次发生变化,主要使用场景在于实现​​数据缓存​
  • 409​Conflict​: 请求操作和资源的当前状态存在冲突。主要使用场景在于实现​​并发控制​
  • 412​Precondition Failed​: 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。主要使用场景在于实现​​并发控制​

客户端错误4xx

  • 400​Bad Request​: 因为语法错误,服务器未能理解请求。
  • 401​Unauthorized​: 合法请求,但对被请求页面的访问被禁止。因为被请求的页面需要身份验证,客户端没有提供或者身份验证失败。
  • 403​Forbidden​: 合法请求,但对被请求页面的访问被禁止。
  • 404​Not Found​: 服务器无法找到被请求的页面
  • 405​Method Not Allowed​: 不请求中指定的方法不被允许。
  • 406​Not Acceptable​: 服务器生成的响应无法被客户端所接受。
  • 410​Gone​: 被请求的资源已被删除,只有在确定了这种情况是永久性的时候才可以使用,否则建议使用​​404 Not Found​
  • 413​Payload Too Large​: 由于​​POST​​​ 或者​​PUT​​所请求的实体太大,服务器不会接受请求。
  • 415​Unsupported Media Type​: 由于媒介类型不被支持,服务器不会接受请求。
  • 422​Unprocessable Entity​: 请求格式正确,但是由于含有语义错误,无法响应
  • 428​Precondition Required​: 要求先决条件,如果想要请求能成功必须满足一些预设的条件

服务端错误5xx

  • 500​Internal Server Error​: 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
  • 501​Not Implemented​: 服务器不支持当前请求所需要的某个功能,或者服务器无法完成请求。
  • 502​Bad Gateway​: 请求未完成,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  • 503​Service Unavailable​: 由服务器当前不可用(过载或者当机)。

​501​​​ 与 ​​405​​​ 的区别是:​​405​​​ 是表示服务端不允许客户端这么做,​​501​​ 是表示客户端或许可以这么做,但服务端还没有实现这个功能

相关资料:

​HTTP 接口设计指北​

如果您想获得更多关于 Flutter 的知识并探索更多新奇有趣的东西以更好地使用该框架,可以​​关注我的公众号​​,我的公众号里面有更多细节。

大家的点赞,收藏是对坚果的最大支持