推荐答案
在 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 会返回不同类型的响应体。