Koa 中如何设置响应体?

· 约 4 分钟读完 · 第 25 / 117 章

推荐答案

在 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/plain 或 text/html(取决于字符串内容)。

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

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

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

3. 注意事项

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

4. 示例代码

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