传递给路由处理程序的Response对象提供了必要的功能来建立和发送适当的HTTP响应。
1、设置标头
设置标头对于定制适当的HTTP响应尤其重要。比如:设置Content-Type标头是为了告诉浏览器如何处理响应。
下面,列举了Express中提供在Response对象上获取和设置标头值得方法:
方法 | 说明 |
---|---|
get(header) | 返回指定header参数的值 |
set(header, value) | 设置header参数的值 |
set( headerObj ) | 接受一个对象,这个对象包含多个’header’:’value’键值对。每个在headerObj参数中的标头都在Response对象中设置 |
location( path ) | 把location标头设置为指定的path参数。这个路径可以是URL路径,例如/login; 完整的URL,例如http://server.net/; 部分路径,例如:../users; 或者一个浏览器行为,如back |
type( type_string ) | 根据type_string参数设置Content-Type标头。type_string可以是正常的内容类型,如:application/json; 部分类型,如png; 又或者是文件的扩展名,如html |
attachment( [filepath] ) | 把Content-Disposition标头设置为attachment, 并且如果指定filepath, 则Content-Type头是基于文件扩展名设置的。 |
看下面的代码:
var oldType = res.get('Content-Type'); // 获取Content-Type标头
res.set('Content-Type', 'text/plain'); // 设置标头
2、设置状态
直接看代码:
res.status( 200 ); // OK正确
res.status( 300 ); // Redirection重定向
res.status( 400 ); // Bad Request错误的请求
res.status( 401 ); // Unauthorized未经许可
res.status( 403 ); // Forbidden禁止
res.status( 500 ); // Server Error服务器错误
正如上面代码所示,设置状态响应使用的是status( number )方法,其中参数number是在HTTP规范中定义的HTTP响应状态。
3、发送响应
在Express里使用res.send()方法发送响应数据到客户端。
只要你为响应设置必要的标头和状态,send()方法就可以真正处理所有的必要响应。而一旦send()方法执行完毕,它会设置res.finished和res.headerSent属性值。知道了这个,我们就可以使用这些来验证响应是否被发送以及传输了多少数据等。