responseWriter
responseWriter
ctx对象的responseWriter是一个writer对象,可以用于给客户端返回流式输出。
| 名称 | 类型 | 参数 | 返回值 | 说明 |
|---|---|---|---|---|
flush | 方法 | void | 刷新数据 | |
write | 方法 | string或 Buffer | void | 写入数据 |
status | 方法 | int | void | 写入响应状态 |
setHeader | 方法 | key:string,value:string | void | 设置响应头(追加&覆盖) |
addHeader | 方法 | key:string,value:string | void | 设置响应头(只追加,不覆盖) |
getHeader | 方法 | key:string | void | 获取响应头 |
close | 方法 | void | 关闭连接 | |
isCanceled | 方法 | boolean | 判断是否被取消 |
语法
import {HttpServer} from "http";
let server = new HttpServer({
addr: ":8090",
});
server.any("/test", (ctx) => {
let writer = ctx.responseWriter()
// 输出流式数据
writer.write("{code:0,msg:\"success\"}");
// 刷新数据
writer.flush();
});
server.start();
设置多个 Cookie
responseWriter.addHeader()适合追加多个同名响应头,例如多个Set-Cookie。
server.get("/multi-cookie", (ctx) => {
let writer = ctx.responseWriter();
writer.addHeader("Set-Cookie", "token=abc123; Path=/; HttpOnly");
writer.addHeader("Set-Cookie", "theme=dark; Path=/; Max-Age=86400");
ctx.body = {
code: 0
};
});
如果这里改成setHeader("Set-Cookie", ...),后一次设置会覆盖前一次设置。
