HTTP状态码
HTTP状态码
[HTTP常见状态码 && HTTP的逐步发展(通俗易懂版)_网络请求码418-CSDN博客](https://blog.csdn.net/ScheenDuan/article/details/142343622#:~:text=HTTP 状态码 是)
HTTP 状态码是一组由服务器返回给客户端的标准响应代码,用来表示 HTTP 请求的状态。它们帮助客户端了解请求的结果,是 Web 应用开发中不可或缺的一部分。
HTTP 状态码由三位数字组成,按照用途和语义可以分为五个主要的类别:
1xx: 信息性状态码(Informational Responses)
1xx 状态码表示请求已经被接收,客户端可以继续发送请求。
- 100 Continue: 表示客户端可以继续发送请求的剩余部分(比如,POST 请求的主体部分)。
- 101 Switching Protocols: 表示服务器同意客户端的协议切换请求(如 HTTP 切换到 WebSocket)。
- 102 Processing (WebDAV): 表示服务器正在处理请求,还没有完成。
2xx: 成功状态码(Successful Responses)
2xx 状态码表示请求已经成功被服务器接收、理解并处理。
- 200 OK: 请求成功,服务器返回了请求的资源(通常是
GET
请求的响应)。 - 201 Created: 请求成功并且服务器创建了新的资源(通常是
POST
请求的响应)。 - 202 Accepted: 请求已经被接受,但尚未处理。通常用于异步操作。
- 204 No Content: 请求成功,但服务器没有返回任何内容。通常用于
DELETE
请求。 - 206 Partial Content: 表示服务器只返回了部分内容(如文件分块下载)。
3xx: 重定向状态码(Redirection Responses)
3xx 状态码表示需要进一步操作才能完成请求,通常用于 URL 重定向。
- 301 Moved Permanently: 资源的 URL 已永久更改,客户端应将请求重定向到新 URL。
- 302 Found: 临时重定向,资源的 URL 已更改,但客户端应继续使用原始 URL 发出未来的请求。
- 303 See Other: 客户端应当使用
GET
请求重新获取资源(用于避免重复的POST
操作)。 - 304 Not Modified: 表示客户端有缓存的版本且该版本未修改,允许客户端使用缓存版本。
- 307 Temporary Redirect: 临时重定向,客户端应使用原始的 HTTP 方法重新请求新地址。
- 308 Permanent Redirect: 永久重定向,客户端应使用原始 HTTP 方法请求新地址。
4xx: 客户端错误状态码(Client Errors)
4xx 状态码表示客户端的请求存在错误,服务器无法处理。
- 400 Bad Request: 请求格式错误或无效参数。
- 401 Unauthorized: 请求未通过认证,客户端需要提供有效的身份认证信息。
- 403 Forbidden: 请求被服务器拒绝,客户端无权限访问该资源。
- 404 Not Found: 请求的资源不存在或找不到。
- 405 Method Not Allowed: 请求使用了服务器不允许的 HTTP 方法。
- 406 Not Acceptable: 服务器无法生成客户端能接受的内容。
- 408 Request Timeout: 客户端在规定时间内没有发送请求,导致请求超时。
- 409 Conflict: 请求无法处理,因为它与当前资源的状态冲突(如重复的更新)。
- 410 Gone: 请求的资源永久不可用,且没有新地址。
- 413 Payload Too Large: 请求体内容过大,服务器无法处理。
- 415 Unsupported Media Type: 请求中的媒体类型不受支持(例如上传的文件格式错误)。
- 429 Too Many Requests: 客户端发送了过多的请求,被限流。
5xx: 服务器错误状态码(Server Errors)
5xx 状态码表示服务器在处理请求时发生了错误,无法完成请求。
- 500 Internal Server Error: 服务器遇到了意外情况,无法完成请求。
- 501 Not Implemented: 服务器不支持当前请求的方法,或者不具备处理的能力。
- 502 Bad Gateway: 作为网关或代理的服务器从上游服务器接收到无效响应。
- 503 Service Unavailable: 服务器当前无法处理请求,通常是由于维护或过载。
- 504 Gateway Timeout: 作为网关或代理的服务器没有及时从上游服务器接收到响应。
- 505 HTTP Version Not Supported: 服务器不支持客户端请求的 HTTP 协议版本。
常见 HTTP 状态码的解释与使用场景
200 OK:
- 场景:
GET
请求成功,服务器返回了资源。 - 例子: 用户成功访问一个网页或获取某个数据。
- 场景:
201 Created:
- 场景:
POST
请求成功,服务器创建了一个新资源。 - 例子: 用户成功注册,创建了一个新账户。
- 场景:
400 Bad Request:
- 场景: 客户端发送的请求格式有问题,服务器无法理解。
- 例子: API 请求中参数缺失或格式错误。
401 Unauthorized:
- 场景: 请求未通过身份验证。
- 例子: 用户未登录或登录凭证过期,访问受限资源。
403 Forbidden:
- 场景: 请求被拒绝,客户端没有权限访问资源。
- 例子: 试图访问管理员专用的页面,但用户没有管理员权限。
404 Not Found:
- 场景: 请求的资源在服务器上不存在。
- 例子: 用户访问一个不存在的 URL。
500 Internal Server Error:
- 场景: 服务器端发生错误,无法完成请求。
- 例子: 代码运行时遇到未处理的异常。
503 Service Unavailable:
- 场景: 服务器暂时过载或正在维护。
- 例子: 在高峰期服务器资源不足时,无法处理请求。
如何选择合适的 HTTP 状态码
- 成功类(2xx): 如果请求正常处理完毕,比如数据获取、创建或修改,都应该使用 2xx 的状态码,最常见的是
200 OK
。 - 重定向类(3xx): 如果资源被移到新的地址或者请求需要进一步操作,使用 3xx 状态码,例如
301 Moved Permanently
或302 Found
。 - 客户端错误类(4xx): 当请求有误时,返回 4xx 状态码,最常见的有
400 Bad Request
(请求格式有误)和404 Not Found
(请求的资源不存在)。 - 服务器错误类(5xx): 如果问题发生在服务器端,比如代码出错、数据库连接失败等,则返回 5xx 状态码,比如
500 Internal Server Error
或503 Service Unavailable
。
总结
HTTP 状态码是客户端与服务器通信中不可或缺的一部分,通过状态码可以快速了解请求的结果以及是否需要进一步处理。理解和正确使用状态码不仅能够提升 API 的可用性,还能让客户端开发人员更快地发现和解决问题。
HTTP状态码
http://willxu0313.github.io/2025/01/22/gin-backend/HTTP状态码/