使用 Express.js 响应 JSON 数据的最佳实践

在现代 web 开发中,响应 JSON 数据是一个非常常见的需求。Express.js 是一个非常流行的 Node.js web 框架,它提供了方便的 JSON 响应功能。然而,在实际开发中,我们需要注意一些最佳实践,以确保良好的性能和可维护性。

确定返回的 JSON 数据结构

在设计响应 JSON 数据之前,我们需要先确定 JSON 数据的结构。这通常与我们的业务逻辑紧密相关。例如,对于一个博客网站,我们可能会返回以下数据:

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

这就是一个比较典型的博客文章数据结构,我们可以通过将这些数据存储在数据库中,并使用 Express.js 在路由中响应这些数据。

使用 HTTP 状态码

在响应 JSON 数据时,我们应该始终使用适当的 HTTP 状态码。HTTP 状态码指示请求是否成功,以及出现任何错误的类型。以下是一些推荐的状态码:

  • 200 OK:请求成功处理,并返回 JSON 数据。
  • 201 Created:请求已成功处理,并创建了新的资源,例如创建新用户。
  • 400 Bad Request:请求参数不正确或缺少必需的参数。
  • 401 Unauthorized:请求需要身份验证,但未提供正确的凭据。
  • 403 Forbidden:请求被禁止,可以是由于权限不足、访问被限制等。
  • 404 Not Found:请求的资源不存在。
  • 500 Internal Server Error:服务器发生错误。

添加元数据和错误信息

除了 JSON 数据本身,我们还应该向响应中添加一些元数据和错误信息。例如,我们可以添加一个 status 元素,以指示响应的状态,添加一个 message 元素,以提供有关响应的进一步信息。

如果出现错误,我们应该提供错误的详细信息,例如错误代码、错误消息等。处理错误时,我们应该返回适当的 HTTP 状态码和错误信息。这将使客户端能够更好地了解发生了什么错误,并采取相应的措施。

例如,我们可以将以下错误信息添加到响应中:

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

使用 express.json 中间件

Express.js 提供了一个内置的中间件 express.json(),该中间件用于解析请求主体中的 JSON 数据。我们可以在路由中使用它来轻松地生成 JSON 响应。

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

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

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

在上面的示例中,我们将 express.json() 中间件添加到应用程序中,以启用 JSON 解析。然后,我们可以在路由中处理一个 POST 请求,并返回相同的 JSON 数据。

使用自定义中间件处理 JSON 响应

为了更好地组织我们的代码,我们可以考虑使用自定义中间件来处理 JSON 响应。这将使我们可以在多个路由中重用响应生成代码,并提高代码的可维护性。

以下是一个基本的 JSON 响应中间件的示例:

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

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

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

  -------
-

在上面的示例中,我们定义了一个 jsonResponse 中间件函数,它接受三个参数:请求对象,响应对象和下一个中间件函数。在该函数中,我们向响应对象添加了一个 jsonOutput 函数,该函数将数据、元数据和状态码组合为一个 JSON 响应。

在路由中,我们可以使用 res.jsonOutput() 函数来发送 JSON 响应。

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

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

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

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

  -------
-

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

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

结论

在使用 Express.js 响应 JSON 数据时,请确保遵循最佳实践,包括确定返回的 JSON 数据结构、使用 HTTP 状态码、添加元数据和错误信息以及使用自定义中间件处理 JSON 响应。这将使您的代码更加优雅,易于维护,并提高性能。

希望这篇文章对您有所帮助,感谢您的阅读。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6710b20f377015f5a1a235f6