Koa 面试题 目录

Koa 中如何设置响应体?

推荐答案

在 Koa 中,可以通过 ctx.body 来设置响应体。ctx.body 可以接受多种类型的值,包括字符串、Buffer、对象、流等。Koa 会自动根据 ctx.body 的类型来设置合适的 Content-Type 响应头。

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

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

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

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

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

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

本题详细解读

1. ctx.body 的作用

ctx.body 是 Koa 中用于设置响应体的属性。它的值可以是字符串、Buffer、对象、流等类型。Koa 会根据 ctx.body 的类型自动设置合适的 Content-Type 响应头。

2. 不同类型的响应体

  • 字符串:当 ctx.body 设置为字符串时,Koa 会自动将 Content-Type 设置为 text/plaintext/html(取决于字符串内容)。

  • JSON 对象:当 ctx.body 设置为对象时,Koa 会自动将对象序列化为 JSON 字符串,并将 Content-Type 设置为 application/json

  • Buffer:当 ctx.body 设置为 Buffer 时,Koa 会将 Buffer 直接作为响应体发送,并设置 Content-Typeapplication/octet-stream

  • :当 ctx.body 设置为流时,Koa 会将流的内容作为响应体发送,并自动处理流的读取和关闭。

3. 注意事项

  • 如果 ctx.body 没有被设置,Koa 会返回一个空的响应体,状态码为 404
  • 如果 ctx.body 被设置为 nullundefined,Koa 会返回一个空的响应体,状态码为 204(No Content)。
  • 如果 ctx.body 被设置为一个函数,Koa 会将其视为中间件并调用它。

4. 示例代码

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

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

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

在这个示例中,根据不同的路径,Koa 会返回不同类型的响应体。

纠错
反馈