关于常见状态码,你了解多少?
作者:坚果
华为云享专家,InfoQ 签约作者,阿里云专家博主,51CTO 博客首席体验官,开源项目 GVA 成员之一,专注于大前端技术的分享,包括 Flutter,小程序,安卓,VUE,JavaScript
大家好,我是坚果,今天在逛github的时候发现一个文档HTTP 接口设计指北,顺便了解了一下,觉得不错,就把关于状态码的知识整理了一下,大家喜欢的话,可以去阅读原文,获取更多细节。
请求成功2xx
- 200OK: 请求执行成功并返回相应数据,如
GET
成功 - 201Created: 对象创建成功并返回相应资源数据,如
POST
成功; - 202Accepted: 接受请求,但无法立即完成创建行为。
- 204No Content: 请求执行成功,不返回相应资源数据,如
PATCH
,DELETE
成功
重定向3xx
重定向的新地址都需要在响应头 Location
中返回
- 301Moved Permanently: 被请求的资源已永久移动到新位置
- 302Found: 请求的资源现在临时从不同的 URI 响应请求
- 303See Other: 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该使用
GET
方法进行请求 - 307Temporary Redirect: 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该保持原有的请求方法进行请求
条件请求
- 304Not Modified: 资源自从上次请求后没有再次发生变化,主要使用场景在于实现数据缓存
- 409Conflict: 请求操作和资源的当前状态存在冲突。主要使用场景在于实现并发控制
- 412Precondition Failed: 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。主要使用场景在于实现并发控制
客户端错误4xx
- 400Bad Request: 因为语法错误,服务器未能理解请求。
- 401Unauthorized: 合法请求,但对被请求页面的访问被禁止。因为被请求的页面需要身份验证,客户端没有提供或者身份验证失败。
- 403Forbidden: 合法请求,但对被请求页面的访问被禁止。
- 404Not Found: 服务器无法找到被请求的页面
- 405Method Not Allowed: 不请求中指定的方法不被允许。
- 406Not Acceptable: 服务器生成的响应无法被客户端所接受。
- 410Gone: 被请求的资源已被删除,只有在确定了这种情况是永久性的时候才可以使用,否则建议使用
404 Not Found
- 413Payload Too Large: 由于
POST
或者PUT
所请求的实体太大,服务器不会接受请求。 - 415Unsupported Media Type: 由于媒介类型不被支持,服务器不会接受请求。
- 422Unprocessable Entity: 请求格式正确,但是由于含有语义错误,无法响应
- 428Precondition Required: 要求先决条件,如果想要请求能成功必须满足一些预设的条件
服务端错误5xx
- 500Internal Server Error: 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
- 501Not Implemented: 服务器不支持当前请求所需要的某个功能,或者服务器无法完成请求。
- 502Bad Gateway: 请求未完成,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
- 503Service Unavailable: 由服务器当前不可用(过载或者当机)。
501
与 405
的区别是:405
是表示服务端不允许客户端这么做,501
是表示客户端或许可以这么做,但服务端还没有实现这个功能
相关资料:
如果您想获得更多关于 Flutter 的知识并探索更多新奇有趣的东西以更好地使用该框架,可以关注我的公众号,我的公众号里面有更多细节。
大家的点赞,收藏是对坚果的最大支持