Koa Response 对象是 node 普通 request 对象之上的抽象, 提供了日常 HTTP server 中有用的功能.
响应 header 对象.
请求socket.
返回响应状态. 默认 res.status 没有值, 而不是像 node 的 res.statusCode 默认为 200.
使用状态码或不区分大小写的字符串设置响应状态:
注意: 不用担心没法记住这些状态码, 如果设置错误, 会有异常抛出, 并列出该状态码表, 从而帮助修改.
获取响应状态消息. 默认, response.message
与response.status
关联.
设置响应状态消息为给定值.
设置响应 Content-Length.
如果 Content-Length
存在返回相应数值, 或通过 res.body
计算得出, 否则返回 undefined
.
返回响应内容.
设置响应内容为如下值:
如果 res.status 没有设置, Koa 会自动设定 status 为 200 或 204.
Content-Type 默认设置为 text/html 或 text/plain, 两个的编码都是 utf-8. Content-Length 同样会被设置.
Content-Type 默认设置为 application/octet-stream, 并设置 Content-Length.
Content-Type 默认设置为 application/octet-stream.
Content-Type 默认设置为 application/json.
获取响应头部字段值, field 区分大小写.
var etag = this.get('ETag');
设置响应头部字段 field 为 value:
this.set('Cache-Control', 'no-cache');
使用对象同时设置多个响应头 fields:
this.set({
'Etag': '1234',
'Last-Modified': date
});
删除头部 field 字段.
获取响应 Content-Type 字段, 不包含参数如 "charset".
var ct = this.type;
// => "image/png"
通过 mime 字符串或文件扩展名设置响应 Content-Type.
this.type = 'text/plain; charset=utf-8';
this.type = 'image/png';
this.type = '.png';
this.type = 'png';
注意: 当合适的 charset 可以确定, 会自动设置, 例如 res.type = 'html' 会自动设置为 "utf-8", 但是如果设置完整时, charset 不会自动设定, 如 res.type = 'text/html'.
跟 this.request.is() 非常相似. 检查响应 type 是否是提供的 types 之一. 该方法在开发修改响应内容的中间件时非常有用
例如这是一个压缩 html 响应的中间件, 他不会处理 streams 类型.
var minify = require('html-minifier');
app.use(function *minifyHTML(next){
yield next;
if (!this.response.is('html')) return;
var body = this.body;
if (!body || body.pipe) return;
if (Buffer.isBuffer(body)) body = body.toString();
this.body = minify(body);
});
执行 [302] 重定向到 url.
字符 "back" 是一种特殊用法, 能提供 Referrer支持, 当没有 Referrer时 使用alt 或 "/"
this.redirect('back');
this.redirect('back', '/index.html');
this.redirect('/login');
this.redirect('http://google.com');
如果想要修改默认状态 302, 直接在重定向之前或之后设定 status, 如果想修改 body , 需要 在重定向之后执行:
this.status = 301;
this.redirect('/cart');
this.body = 'Redirecting to shopping cart';
设置 "attachment" 的 Content-Disposition 用于给客户端发送信号, 提示下载. 下载文件的名字可以通过参数设置.
检查响应头是否已经发送. 在有错误时检查 client 是否被通知时有用.
如果响应头部包含 Last-Modified, 返回 Date.
将 Last-Modified 头部设置为正确的 UTC string. 可以使用 Date 或 date 字符串设置.
this.response.lastModified = new Date();
设置响应的 ETag (包括 wrapped "). 注意没有对应的 res.etag 获取器.
this.response.etag = crypto.createHash('md5').update(this.body).digest('hex');
Vary on field.