状态码是 RESTful API 中非常重要的一部分,通过状态码来表示服务器返回的响应状态和信息。了解 RESTful API 中的各个状态码及其含义,可以帮助我们更好地理解 API 的使用和开发,也有助于我们处理请求时更加高效和准确。本文将为大家介绍 RESTful API 中的状态码一览表及其含义。
1xx - 信息状态码
1xx 状态码表示服务器已经接收到请求,正在处理中,但尚未完成处理。主要包括以下两种状态码。
- 100 - Continue:表示服务器已经接收到请求头,客户端可以继续发送请求体。例如,当客户端向服务器提交大文件时,服务器会先检查用户权限等情况,此时服务器返回 100 状态码告知客户端可以继续发送文件内容。
- 101 - Switching Protocols:表示服务器正在切换协议。例如,当客户端请求从 HTTP 协议切换到 WebSocket 协议时,服务器返回 101 状态码表示正在进行协议切换。
2xx - 成功状态码
2xx 状态码表示服务器已经成功接收、理解并处理了请求。主要包括以下状态码。
- 200 - OK:表示服务器成功处理了请求。例如,当客户端请求某个资源成功时,服务器会返回 200 状态码,并携带请求结果。
- 201 - Created:表示服务器成功创建了资源。例如,当客户端使用 POST 方法向服务器提交数据,服务器成功创建新的资源时,返回 201 状态码。
- 204 - No Content:表示服务器已经成功处理了请求,但是没有返回任何内容。通常使用在 DELETE 或 PUT 请求时。
3xx - 重定向状态码
3xx 状态码表示客户端需要进行进一步的操作才能完成请求。主要包括以下状态码。
- 301 - Moved Permanently:表示请求的资源已经被永久移动,客户端需要使用新的 URI 进行请求。例如,当客户端请求的资源已经被删除或者迁移时,服务器会返回 301 状态码,同时告知新的 URI。
- 302 - Found:表示请求的资源被暂时移动,客户端需要使用新的 URI 进行请求。例如,当客户端请求的资源正在维修或者被重新部署时,服务器会返回 302 状态码,同时告知新的 URI。
- 304 - Not Modified:表示客户端的缓存资源是最新的,可以直接使用。当服务器接收到包含 If-Modified-Since 或 If-None-Match 请求头的请求时,且客户端缓存的资源没有更新时,服务器会返回 304 状态码。
4xx - 客户端错误状态码
4xx 状态码表示客户端请求有错误,常见的状态码有以下类型。
- 400 - Bad Request:表示客户端请求有语法错误,服务器无法理解。例如,请求参数格式不对、缺失参数等。
- 401 - Unauthorized:表示客户端请求需要身份验证,但是没有提供凭证。例如,需要登录授权的 API,需要在请求头中携带正确的身份验证数据。
- 403 - Forbidden:表示客户端请求有权限问题,服务器拒绝请求。例如,客户端请求的资源不允许访问、访问限制等。
- 404 - Not Found:表示请求的资源不存在,服务器没有找到。例如,客户端请求的 API 地址或资源已删除或未创建等。
- 405 - Method Not Allowed:表示客户端请求的 HTTP 方法不适用于资源。例如,一个 HTTP POST 请求不适用于只读的 API。
- 409 - Conflict:表示客户端请求的资源与服务器上的现有资源冲突。例如,上传同名文件或者资源等。
- 429 - Too Many Requests:表示客户端请求的访问次数超过了 API 的限制。例如,服务器对用户的请求频率进行限制,当客户端请求次数超过限制时,服务器返回此状态码。
5xx - 服务器错误状态码
5xx 状态码表示服务器内部错误,无法完成客户端请求。主要包括以下状态码。
- 500 - Internal Server Error:表示服务器内部错误,无法完成客户端请求。
- 503 - Service Unavailable:表示服务器暂时无法提供服务,通常是由于服务器维护或过载等原因,导致服务暂时无法响应请求。
总结
RESTful API 中的状态码是非常重要的一环,它能够准确的描述出客户端请求的返回状态,帮助客户端快速的进行下一步操作。熟悉和掌握 RESTful API 中的状态码,可以帮助我们更好的处理请求并开发更加优秀的 API。下面是一个示例代码,实际中可能还需要在状态码准确之后,按照状态码的含义来对返回信息进行处理,我们可以在完整的业务逻辑中体现。
-- -------------------- ---- ------- ---------------------------- -------------- -- - -- ---------------- --- ---- - ------ ---------------- - ---- -- ---------------- --- ---- - ----- --- ----------------- - ---- -- ---------------- --- ---- - ----- --- -------------- - ---- -- ---------------- --- ---- - ----- --- --------------------- - ---- - ----- --- -------------------- - -- ---------- -- - ------------------ -- ------------ -- - ----------------------------- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c32b4a83d39b488171ec53