前言
在现代 Web 开发中,RESTful API 是一个非常流行的架构风格。它的设计哲学是以资源为中心,通过 URL 和 HTTP 方法对资源进行操作。使用 RESTful API 的好处包括可扩展性好、易于缓存、简洁易懂、易于测试和维护,以及适用于各种客户端。
在使用 RESTful API 的过程中,状态码是一个非常重要的概念。状态码在 HTTP 响应中标识响应的状态,它的值是一个三位数字,表示响应的类型和处理结果。了解和正确使用状态码是确保 API 设计正确和维护良好的关键步骤。
本文将深入探讨 HTTP 状态码以及 RESTful API 中常见的状态码及其表示方法。
HTTP 状态码
HTTP 协议定义了一套状态码,用于标识服务器对请求的处理结果,HTTP 状态码由三位数字组成,分为五个类别,从 100 到 599。
其中,第一个数字表示状态码所属的分类,状态码的含义如下:
- 1xx:信息提示
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器错误
下面是一些常见的状态码:
200 OK
表示请求成功,服务器成功处理了请求,返回了请求的内容。
201 Created
表示请求成功,新的资源已经被创建。
204 No Content
表示请求成功,但是返回的响应没有消息体(等同于删除操作)。
400 Bad Request
表示客户端的请求有语法错误或无法识别的参数。
401 Unauthorized
表示客户端请求没有提供认证信息或者认证失败。
403 Forbidden
表示客户端请求的访问被服务器拒绝了。
404 Not Found
表示服务器无法找到请求的资源。
500 Internal Server Error
表示服务器内部发生错误,无法完成请求。
RESTful API 中常见的状态码
在 RESTful API 中,状态码是对资源的操作结果进行描述的。RESTful API 使用 HTTP 状态码作为表示资源操作的标准,下面是一些常见的 RESTful API 状态码及其表示方法。
200 OK
表示成功获取资源,GET 和 HEAD 方法使用此状态码。
例如:
GET /users/1 HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "name": "Alice" }
201 Created
表示成功创建资源,POST 方法使用此状态码。
例如:
-- -------------------- ---- ------- ---- ------ ------------- ---------------- - ------- ----- - -------- --- ------- ------------- ---------------- - ----- -- ------- ----- -展开代码
204 No Content
表示成功更新资源或者删除资源,PUT、PATCH、DELETE 方法使用此状态码。
例如:
-- -------------------- ---- ------- --- -------- ------------- ---------------- - ----- -- ------- ------ ---- - -------- --- -- ------- ------ -------- -------- --- -- -------展开代码
400 Bad Request
表示客户端请求不符合要求,POST、PUT、PATCH 方法使用此状态码。
例如:
-- -------------------- ---- ------- ---- ------ ------------- ---------------- - ------ ----- - -------- --- --- ------- ------------- ---------------- - -------- ----- -- --------- - --- -------- ------------- ---------------- - ------ ----- - -------- --- --- ------- ------------- ---------------- - -------- ----- -- --------- -展开代码
401 Unauthorized
表示客户端未提供认证信息或认证失败,所有方法均可使用此状态码。
例如:
-- -------------------- ---- ------- --- -------- -------- --- ------------ ----------------- ----- ------------- ---- ------ ------------- ---------------- - ------- ----- - -------- --- ------------ ----------------- ----- ------------- --- -------- ------------- ---------------- - ----- -- ------- ------ ---- - -------- --- ------------ ----------------- ----- -------------展开代码
403 Forbidden
表示客户端请求被服务器拒绝,所有方法均可使用此状态码。
例如:
-- -------------------- ---- ------- --- -------- -------- --- --------- ------------- ---------------- - -------- ---- ----- ---- ---------- -- ------ ---- --------- - ---- ------ ------------- ---------------- - ------- ----- - -------- --- --------- ------------- ---------------- - -------- ---- ----- ---- ---------- -- ------ ---- --------- - --- -------- ------------- ---------------- - ----- -- ------- ------ ---- - -------- --- --------- ------------- ---------------- - -------- ---- ----- ---- ---------- -- ------ ---- --------- -展开代码
404 Not Found
表示请求的资源不存在,所有方法均可使用此状态码。
例如:
-- -------------------- ---- ------- --- ---------- -------- --- --- ----- ------------- ---------------- - -------- ----- --- ------ - --- ---------- ------------- ---------------- - ----- ---- ------- ----- - -------- --- --- ----- ------------- ---------------- - -------- ----- --- ------ - ------ ---------- -------- --- --- ----- ------------- ---------------- - -------- ----- --- ------ -展开代码
500 Internal Server Error
表示服务器内部发生错误,所有方法均可使用此状态码。
例如:
-- -------------------- ---- ------- --- -------- -------- --- -------- ------ ----- ------------- ---------------- - -------- ---------- ---- ------ - ---- ------ ------------- ---------------- - ------- ----- - -------- --- -------- ------ ----- ------------- ---------------- - -------- ---------- ---- ------ - --- -------- ------------- ---------------- - ----- -- ------- ------ ---- - -------- --- -------- ------ ----- ------------- ---------------- - -------- ---------- ---- ------ -展开代码
结语
状态码是 RESTful API 设计中非常重要的一部分,它通过 HTTP 响应来表示资源的操作结果。了解和正确使用状态码能够帮助我们编写可维护和可扩展的 API,适应不同的客户端需求。本文介绍了 HTTP 状态码和 RESTful API 中常见的状态码及其表示方法,希望能对大家有所启发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c961fde46428fe9e0c083f