状态代码:HTTP 状态代码

2025-06-04

状态代码:HTTP 状态代码

REST API 会利用 HTTP 消息响应的状态行部分来提供请求的反馈。此功能主要描述服务器返回的结果。
订阅 YouTube 频道
大多数 HTTP 代码主要分为五类,而这五大标准涵盖了四十种代码。RFC-2616 是一项 Web 标准,它将状态行的语法描述为:

状态行 = HTTP 版本 SP 状态
代码 SP 原因短语 CRLF

以下是 http 状态代码列表。您可以使用这份 http 状态代码速查表来跟踪客户端请求。

Http 状态代码分为以下五类:

1xx:以 1 开头的 Http 客户端代码系列表示这是信息性的。这统计了传输级通信协议的操作。2xx
:以 2 开头的系列表示通信全部正常。简而言之,这意味着客户端的请求已被服务器接受,并且响应已成功返回。3xx
:指示性代码,指示客户端考虑更多步骤以完成请求。4xx
:4 系列中的代码列表实际上表示错误在于客户端。这可能包括尝试访问服务器上不存在的资源或尝试访问被禁止的资源。5xx
:5 系列是服务器端问题,因此纠正它成为服务器的责任。某些错误可能包括由于请求处理错误而引起的内部服务器错误。


下面您可以简要了解每个代码的含义以及它们作为 http 状态代码的功能。

状态代码:200

这是一个 OK 状态码。此状态码表示客户端的请求已由 REST API 成功执行。200 状态码始终包含响应主体,并且根据标准,这是强制性的。响应取决于请求的类型,例如,对于 POST 请求,主体将包含请求中操作所需的响应。对于 HEAD 类型的请求,会接收标头字段。

状态码:201

这是一个典型的 HTTP“已创建”状态码,因为此状态码是由于控制器在接受客户端请求后在服务器端创建资源而产生的。此 201 状态码的响应主体包含新创建资源的 URI,并且可能存在多个 URI。然而,在标头字段中,最终应该使用最具体的、需要引用的资源的 URI。
如果服务器未能立即创建资源,并且创建时间可能过长,则必须返回 202 状态码。

状态代码:202

这是一个表示请求已被接受的响应代码。状态码 202 通常用于请求的操作可能需要比平常更长的时间才能完成的情况。这种标准对服务器和客户端都有利,因为两者之间的连接现在无需持久化。这意味着客户端无需一直连接到服务器直到处理完成。由于该代码在操作进行到一半或等待时返回,因此会在响应主体中发送一个指向状态监控的指针或用户预期操作完成的大致时间。

状态码:204

属于 2xx 代码系列,此特定代码还表示服务器已成功接受请求并已完成请求。此代码的突出之处在于,REST API 将返回一个空的响应主体,但会包含有关当前客户端文档活动视图的更新元信息(如果存在),作为一组实体标头。

状态代码:301

如上所述,所有 3xx 系列错误都需要更多步骤才能完成请求。此处,收到此代码表示客户端请求的资源已永久移动,可通过新的 URI 请求获取。此移动可能是由于 REST API 的资源模型略微重新设计造成的。此代码的响应主体将包含所请求资源的新分配 URI。新 API 的版本控制可以帮助您避免收到此响应代码。

状态码:302

这是一种使用状态码进行 URL 重定向的方式。请求的资源已找到,但在客户端,响应将包含该 URL。标头字段中的 URL 是用户将被重定向到的页面。
许多 Web 浏览器对此状态码的实现并不恰当,无论初始请求类型如何,请求类型都会更改为 GET。为了解决客户端预期的响应问题,服务器添加了额外的状态码 303 和 307,以消除混淆。

状态码:303

当我们只想让 REST API 指示控制器的任务已完成,而不是将响应与正文一起发送,而是将其作为对新 URI 的引用发送时,此代码就派上用场了。这次,它不会强制重定向客户端,而是提供一个临时 URI,客户端可以使用 GET 请求访问该 URI。
需要注意的是,此代码响应不应被缓存,但用户后续用来 ping 服务器的 GET 请求可以被缓存。

状态码:304

此代码与 204 状态码非常相似。唯一的区别在于,204 表示响应主体中没有任何内容需要发送,而 304 表示内容未修改,因为 REST API 收到的请求标头会包含 If-Modified-Since 或 If-None-Match。
在这种情况下,服务器不会发送任何响应,因为它假定客户端拥有先前下载的响应中的资源副本,这实际上节省了带宽。

状态码:307

这是一个临时的重定向代码,指示用户访问 REST API 在响应头的 location 字段中发送的链接,而不是 REST API 本身处理请求。用户今后仍需使用原始 URI 进行后续请求。仅当请求类型不是 HEAD 时,响应才应包含关于超链接的简短说明以及指向新 URI 的链接。仅当请求类型为 GET 或 HEAD 时才必须发送此类响应。在其他情况下,重定向的决定权应由用户决定。

状态代码:400

4xx 系列中最通用的代码,表示收到的请求是错误的,客户端不应再发送类似的请求。错误的请求可能涉及无效的请求类型、误导性参数或任何其他违规行为。当 4xx 系列中没有合适的代码可用时,必须发送此代码。

状态代码:401

未经授权且未使用正确凭证访问资源会导致此响应代码。客户端必须响应处理请求时出现的质询,并指导用户如何继续操作。因此,用户可以重复此请求,但这次需要提供正确的身份验证信息。

状态代码:403

这是一个禁止状态码,表示无论用户是否发送了正确的身份验证信息,用户都没有足够的权限访问所请求的资源。重复此操作不会产生任何成功效果。

状态代码:404

通常在请求的资源不可用或未在服务器上找到时发送的状态码。请求可以重复任意次数,但最终响应失败。当服务器以某种方式知道请求的资源之前在请求的 URI 上可用,但不再永久存在时,它可能会选择 410 而不是状态码 404。

状态代码:405

如果服务器上的资源只能通过特定的请求方法访问,例如 GET 或 POST,而不能通过 PUT/DELETE 访问,则状态码 405(方法不接受)将与资源支持信息一起通过允许标头发送。
示例 - 允许:HEAD

状态代码:406

当客户端通过 Accept 请求标头请求某种媒体类型作为响应,但 API 无法生成任何此类响应时,就会出现“不可接受”的 HTTP 状态码。例如,客户端请求的格式可能是 application/json,但 API 只能处理并发送 application/xml 格式的响应,此时 API 需要发送状态码 406。
如果用户对 API 发送的响应不满意,则用户代理必须终止接收数据并修改请求。

状态代码:412

如果来自客户端的请求包含条件,或者更具体地说,在请求标头中包含所谓的先决条件,并且只有在满足条件的情况下才需要处理请求,那么如果不这样做,应该发出 412 先决条件失败响应代码。

状态代码:415

当客户端提供的媒体类型无法被 API 处理时,会出现“不支持的媒体类型”指示性状态代码。例如,客户端发送的请求的 Content-Type 标头中包含 application/pdf,而 API 只能处理 application/xml,那么服务器将发送 415 响应。

状态代码:500

这是一个非常通用的响应代码,表示发生了内部服务器错误。此代码很可能表示在处理请求时引发了异常。由于错误出在服务器端,客户端可能会再次尝试请求,希望获得正确的响应。

状态代码:501

当服务器无法识别请求方法或不知道如何处理请求时,会发出 501 未实现代码。

状态代码:418 我是茶壶

超文本传输​​协议 418 i am a teapot 错误响应代码表示服务器拒绝冲泡咖啡,因为它是一个壶,阅读更多...

>>> 来源文章

文章来源:https://dev.to/anjankant/status-codes-http-status-codes-21k5
PREV
算法与数据结构:资源包算法 - Java
NEXT
害怕在会议上发言?那就提交吧!