RESTful API 设计模式:状态码

阅读时长 7 分钟读完

RESTful API(Representational State Transfer)是一种常用的 Web API 的设计模式,它建立在基于 HTTP 协议的标准上。这种模式提供了一种简单的方式来实现数据交换,并且易于理解和使用。

状态码是 RESTful API 设计中重要的概念,它提供了关于 API 请求执行结果的信息。在本文中,我们将深入探讨 RESTful API 设计中状态码的意义、种类、以及如何合理使用它们提高 API 的可用性和用户体验。

状态码的意义

状态码是 HTTP 协议标准中的一部分,用于表示 HTTP 请求对服务器的处理结果和状态。RESTful API 通过对状态码进行定制,使用它们来传递 API 请求执行的结果和状态。状态码具有下列重要意义:

  1. 状态码浓缩了请求的状态:状态码提供了关于 API 请求执行的详细信息,帮助用户快速理解 API 的执行结果,并作出相应调整。

  2. 给用户提供具体的反馈:API 使用状态码明确告诉用户API执行是否成功、失败以及出错原因,而无需通过其他途径去获取响应的结果信息。

  3. 帮助用户做出下一步的决策:响应的状态码可以直接影响到下一步操作。例如,状态码为 401 说明 没有权限,用户可以选择需要登陆,而状态码 403 表示无权操作,用户无法做任何改变。

因此,状态码在 RESTful API 设计中非常重要,不仅可以提高 API 的可用性和用户体验,还可以提供有效的反馈信息。

常见的状态码

HTTP状态码被分为5类,各有不同的 HTTP 请求状态信息。这里我们列出一些在 RESTful API 设计中使用较多的 HTTP 状态码。

2xx 成功

2xx 状态码表示请求已经成功被服务器接收、理解和接受。常见的状态码如下:

  • 200 - OK:表示请求成功,返回资源的表示。
  • 201 - CREATED:表示请求成功且创建了新的资源。
  • 204 - NO CONTENT:表示请求成功但返回的响应中没有数据。

3xx 重定向

3xx 状态码表示需要客户端采取进一步的操作才能完成请求。常见的状态码如下:

  • 301 - MOVED PERMANENTLY:表示所请求的 URL 已经移动到一个新的位置,需要客户端更新链接。
  • 303 - SEE OTHER:表示所请求的 URL 可以在一个不同的位置找到,需要客户端进行一个 GET 请求,可以使用 GET 方法再次请求新的资源。
  • 304 - NOT MODIFIED:表示请求的资源没有被修改过,可以使用缓存数据。

4xx 客户端错误

4xx 状态码表示客户端的请求有误,常见的状态码如下:

  • 400 - BAD REQUEST:请求出现错误,例如缺少必要的参数或无效参数。
  • 401 - UNAUTHORIZED:需要认证才能访问 API,客户端需要提供正确的证书或凭据。
  • 403 - FORBIDDEN:表示用户没有权限访问该资源。
  • 404 - NOT FOUND:表示请求的资源不存在。

5xx 服务端错误

5xx 状态码表示服务器错误,常见的状态码如下:

  • 500 - INTERNAL SERVER ERROR:表示服务器内部错误。

统一状态码格式

不同的 API 可能会有不同的状态码定义方式和传输标准,这样容易带来困扰和不便管理。在实践中,我们建议使用统一的状态码格式,以便在提升接口易用性的同时,避免出现问题。

我们可以使用以下格式:

这种格式可以很好的梳理出 HTTP 状态与 API 返回信息的对应关系,而且可以为错误类型分配具体的错误码,使得开发工作更加方便。

示例代码

以 Node.js 与 MongoDB 为例子,来展示 RESTful API 状态码示例代码.

-- -------------------- ---- -------
-- -- ------- --
----- -------- - -------------------

-- ------------------------
-------- ------------- ---- ----- -
    -- ----- -
        -- -----
        ------ ----------------------
            ----- ----
            ---- ----------- -- ---------- -- --------- ------ -------------------
            ----- ----
        --
    - ---- -
        -- -------
        ------ ----------------------
            ----- ----
            ---- -------
            ----- ----
        --
    -
-

-- --------
----- ---------- - -----------------
    ----- -------
    ---- -------
    ------- -
        ----- -------
        -------- -
    -
--
----- --------- - ---------------------- -----------

-- ----
--------------- - ------------- ---- -
    ------------------------------------- ----- -
        -- ----- ------ ------------- ----
        ------ ------------- ----- -----
    --
-

-- ----
------------------ - ------------- ---- -
    --- -------- - --------
    --- ---- - --- -------------------
    ----------------------- ----- -
        -- ----- ------ ------------- ----
        ------ ------------- ----- -----
    --
-

-- ----
------------------ - ------------- ---- -
    --- -- - -------------
    ------------------------------- ------------- -
        -- ----- ------ ------------- ----
        ------ ------------- ----- -
            -------- ------
        --
    --
-

-- ----
------------------ - ------------- ---- -
    --- -- - -------------
    --- -------- - --------
    ------------------------------- --------- ------------- ----- -
        -- ----- ------ ------------- ----
        ------ ------------- ----- -----
    --
-

上述代码中封装了一个响应函数,当存在错误时返回状态码为 500,没有错误时返回状态码为 200,这样可以让 API 的调用者知道是请求出了什么问题,还是服务的问题。这种封装方式也是深入实践的经验之谈。

总结

这篇文章深入探讨了 RESTful API 设计模式中状态码的意义、使用方式、以及具体的示例。RESTful API 采用状态码传递 API 执行结果和状态,这是一种简单、可靠的方式,可使 API 更加易于使用和理解。状态码与 HTTP 的不同状态码紧密相关,合理使用它们可以为用户提供更好的API执行结果反馈,同时可以促进 API 开发的高效。综上所述,通过了解 RESTful API 设计中的状态码,开发人员可以建立健壮、易于使用的 Web API,从而加速应用程序开发的过程。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e149c3f6b2d6eab3c72476

纠错
反馈