请解释如何在 Express 中发送 JSON 响应?

推荐答案

在 Express 中发送 JSON 响应非常简单,可以使用 res.json() 方法。这个方法会自动将 JavaScript 对象转换为 JSON 格式,并设置适当的 Content-Type 头为 application/json

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

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

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

在上面的代码中,当客户端访问 /api/data 路由时,服务器会返回一个 JSON 响应,内容为 { "message": "Hello, World!", "status": "success" }

本题详细解读

1. res.json() 方法的作用

res.json() 是 Express 提供的一个便捷方法,用于发送 JSON 响应。它会自动将传入的 JavaScript 对象或数组转换为 JSON 字符串,并设置响应头的 Content-Typeapplication/json

2. 与 res.send() 的区别

虽然 res.send() 也可以发送 JSON 响应,但它不会自动设置 Content-Type 头。因此,使用 res.json() 是更推荐的方式,因为它确保了响应的内容类型是正确的。

3. 处理复杂数据结构

res.json() 不仅可以处理简单的对象,还可以处理复杂的嵌套对象和数组。Express 会自动将这些数据结构转换为 JSON 格式。

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

4. 错误处理

如果 res.json() 方法传入的数据无法转换为 JSON 格式(例如,包含循环引用),Express 会抛出一个错误。因此,在处理复杂数据结构时,确保数据是可序列化的。

5. 设置状态码

你还可以在发送 JSON 响应的同时设置 HTTP 状态码:

在这个例子中,服务器会返回一个 404 状态码,并附带一个 JSON 响应 { "error": "Resource not found" }

纠错
反馈