在客户端与服务器之间的信息传输过程中,我们可以将其比喻为客户与快递员之间的包裹传递。那么服务器是如何通知客户端,操作是成功还是失败?或者有其他的一些情况呢?(就像客户可以查询快递的状态)
而这背后实现的答案是,“HTTP状态码”
快递员(服务器)接收到请求后,会开始处理这个包裹,比如查找、打包、准备发货等。如果一切顺利,快递员会将包裹成功送达,并告知客户(客户端)已成功签收,这就像是服务器返回了一个“200 OK”的状态码,表示请求已成功处理。
然而,有时也会出现一些问题。比如,快递员可能找不到客户请求的包裹(资源不存在),或者由于某种原因暂时无法发货(服务器内部错误)。在这种情况下,快递员会通过一个特定的信息来告知客户发生了什么问题,这些信息就像是HTTP状态码。
例如,如果快递员告诉客户“404 Not Found”,那就意味着客户请求的包裹在仓库中找不到;如果快递员说“500 Internal Server Error”,那就表示快递公司内部出了问题,暂时无法处理客户的请求。
除了直接的成功或失败信息,快递员还可能给出一些重定向的指示。比如,“301 Moved Permanently”就像是快递员告诉客户:“您要的包裹已经永久搬到另一个仓库了,以后请去那里取货。”而“304 Not Modified”则像是快递员确认:“您上次取的包裹内容没有变化,不需要再次取货。”
总的来说,HTTP状态码就像是快递员与客户之间的沟通工具,它们以标准化的方式传达了请求的处理情况,使得客户端能够根据实际情况作出相应的决策和行动。在这个包裹传递的比喻中,HTTP状态码确保了数据的准确传输和交互的顺利进行。
状态码分类
比喻:快递员点头示意收到,等待你进一步指示。
比喻:快递员将包裹放门前,通知你已送达。
比喻:快递员指引你去新地址取件。
比喻:你写错地址,快递员无法找到。
比喻:快递员货车故障,需等待修复。
-
1xx(信息响应):表示服务器收到请求,需要请求者继续执行操作。
-
2xx(成功):表示请求成功,请求被成功接收并处理。
-
3xx(重定向):表示重定向,需要进一步的操作以完成请求。
-
4xx(客户端错误):表示客户端错误,请求包含语法错误或无法完成请求。
-
5xx(服务器错误):表示服务器错误,服务器在处理请求的过程中发生了错误。
HTTP状态码介绍
1xx(信息响应)
状态码
英文名称
描述
100 | Continue | 服务器成功接收到请求头,客户端可以继续发送请求主体。 |
101 | Switching Protocols | 服务器即将切换的协议。 |
2xx(成功)
状态码 | 英文名称 | 描述 |
200 | OK | 请求已成功,请求所希望的响应头或数据体将随此响应返回。 |
201 | Created | 请求已经被实现,而且有一个新的资源已经依据请求的内容而建立,且其 URI 已经随 Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 '202 Accepted'。 |
202 | Accepted | 服务器已接受请求,但尚未处理。 |
203 | Non-Authoritative Information | 非授权信息,表示服务器已成功处理请求,但返回的信息可能来自其他地方,而非原始服务器。 |
204 | No Content | 无内容,服务器成功处理了请求,但不需要返回任何内容。 |
205 | Reset Content | 重置内容,请求已经成功处理,现在应该重置表单,以便用户可以继续输入新的信息 。 |
206 | Partial Content | 部分内容,服务器已经成功处理了部分GET请求。比如断点续传,在下载大文件时,如果下载过程中断,可以从上次中断的地方恢复下载,而不是重新开始。。 |
3xx(重定向)
状态码 | 英文名称 | 描述 |
301 | Moved Permanently | 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。 |
302 | Found | 请求的资源现在临时从不同的 URI 响应请求。 |
303 | See Other | 常用于将 POST 请求重定向到 GET 请求,比如你上传了一份个人信息,服务器发回一个 303 响应,将你导向一个“上传成功”页面。 |
304 | Not Modified | 请求的资源现在临时从不同的 URI 响应请求。 |
305 | Use Proxy | 使用代理,所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 状态码 307 与 302 之间的唯一区别在于,当发送重定向请求的时候,307 状态码可以确保请求方法和消息主体不会发生变化 |
表格展示效果不佳..
关于4xx和5xx可以参考下图
在工作中,HTTP 状态码还有一个作用,就是能有效防止程序员同学们甩锅,当系统出现一个bug的时候,他们第一反应大概率是:这肯定不是我写的代码出问题了。
但是,如果服务器返回4xx错误,那大概率就是前端同学的锅,前端同学就要第一时间介入;如果服务器返回5xx错误,就可以理直气壮地找后端同学解决问题了。