对象 HttpResponse
HttpResponse 是一个 HTTP 响应对象,使用 HttpRequest.response 对象完成 Http 服务端数据响应,或 http.request 请求返回服务器的响应数据
以下的例子展示如何在 http.Server 中使用,示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14const http = require('http');
const server = new http.Server(8080, (request) => {
// retreive the response object
const response = request.response;
// set the status code
response.statusCode = 200;
// set the content type to text/plain
response.setHeader('Content-Type', 'text/plain');
// write the response body
response.write('ok');
});
server.start();
继承关系
构造函数
HttpResponse
HttpResponse 构造函数,创建一个新的 HttpResponse 对象
1new HttpResponse();
常量
TEXT
指定消息类型 1,代表一个文本类型
1const HttpResponse.TEXT = 1;
BINARY
指定消息类型 2,代表一个二进制类型
1const HttpResponse.BINARY = 2;
成员属性
statusCode
Integer, 查询和设置响应消息的返回状态
1Integer HttpResponse.statusCode;
statusMessage
String, 查询和设置响应消息的返回消息
1String HttpResponse.statusMessage;
status
Integer, 查询和设置响应消息的返回状态,等同于 statusCode
1Integer HttpResponse.status;
ok
Boolean, 查询当前响应是否正常
1readonly Boolean HttpResponse.ok;
cookies
NArray, 返回当前消息的 HttpCookie 对象列表
1readonly NArray HttpResponse.cookies;
protocol
String, 协议版本信息,允许的格式为:HTTP/#.#
1String HttpResponse.protocol;
headers
HttpCollection, 包含消息中 http 消息头的容器,只读属性
1readonly HttpCollection HttpResponse.headers;
keepAlive
Boolean, 查询和设定是否保持连接
1Boolean HttpResponse.keepAlive;
upgrade
Boolean, 查询和设定是否是升级协议
1Boolean HttpResponse.upgrade;
maxHeadersCount
Integer, 查询和设置最大请求头个数,缺省为 128
1Integer HttpResponse.maxHeadersCount;
maxHeaderSize
Integer, 查询和设置最大请求头长度,缺省为 8192
1Integer HttpResponse.maxHeaderSize;
maxBodySize
Integer, 查询和设置 body 最大尺寸,以 MB 为单位,缺省为 64
1Integer HttpResponse.maxBodySize;
socket
Stream, 查询当前对象的来源 socket
1readonly Stream HttpResponse.socket;
value
String, 消息的基本内容
1String HttpResponse.value;
params
NArray, 消息的基本参数
1readonly NArray HttpResponse.params;
type
Integer, 消息类型
1Integer HttpResponse.type;
data
Value, 查询消息的数据,此属性会根据 content-type 返回不同数据,为 text 时,返回文本,为 json 时返回 json,其它时候返回二进制
1readonly Value HttpResponse.data;
body
SeekableStream, 包含消息数据部分的流对象
1SeekableStream HttpResponse.body;
length
Long, 消息数据部分的长度
1readonly Long HttpResponse.length;
stream
Stream, 查询消息 readFrom 时的流对象
1readonly Stream HttpResponse.stream;
lastError
String, 查询和设置消息处理的最后错误
1String HttpResponse.lastError;
成员函数
writeHead
设置响应消息的返回状态,返回消息,并添加响应头
1
2
3HttpResponse.writeHead(Integer statusCode,
String statusMessage,
Object headers = {});
调用参数:
- statusCode: Integer, 指定响应消息的返回状态
- statusMessage: String, 指定响应消息的返回消息
- headers: Object, 指定响应消息添加的响应头
设置响应消息的返回状态,返回消息,并添加响应头
1
2HttpResponse.writeHead(Integer statusCode,
Object headers = {});
调用参数:
- statusCode: Integer, 指定响应消息的返回状态
- headers: Object, 指定响应消息添加的响应头
addCookie
向 cookies 添加一个 HttpCookie 对象
1HttpResponse.addCookie(HttpCookie cookie);
调用参数:
- cookie: HttpCookie, 指定要添加的 HttpCookie 对象
redirect
发送重定向到客户端
1HttpResponse.redirect(String url);
调用参数:
- url: String, 重定向的地址
发送重定向到客户端
1
2HttpResponse.redirect(Integer statusCode,
String url);
调用参数:
- statusCode: Integer, 指定响应消息的返回状态,接受的状态为:301, 302, 307
- url: String, 重定向的地址
sendHeader
仅发送格式化 http 头到给定的流对象
1HttpResponse.sendHeader(Stream stm) async;
调用参数:
- stm: Stream, 指定接收格式化消息的流对象
hasHeader
检查是否存在指定键值的消息头
1Boolean HttpResponse.hasHeader(String name);
调用参数:
- name: String, 指定要检查的键值
返回结果:
- Boolean, 返回键值是否存在
firstHeader
查询指定键值的第一个消息头
1String HttpResponse.firstHeader(String name);
调用参数:
- name: String, 指定要查询的键值
返回结果:
- String, 返回键值所对应的值,若不存在,则返回 undefined
allHeader
查询指定键值的全部消息头
1NObject HttpResponse.allHeader(String name = "");
调用参数:
- name: String, 指定要查询的键值,传递空字符串返回全部键值的结果
返回结果:
- NObject, 返回键值所对应全部值的数组,若数据不存在,则返回 null
addHeader
添加一个消息头,添加数据并不修改已存在的键值的消息头
1HttpResponse.addHeader(Object map);
调用参数:
- map: Object, 指定要添加的键值数据字典
添加指定名称的一组消息头,添加数据并不修改已存在的键值的消息头
1
2HttpResponse.addHeader(String name,
Array values);
调用参数:
- name: String, 指定要添加的键值
- values: Array, 指定要添加的一组数据
添加一个消息头,添加数据并不修改已存在的键值的消息头
1
2HttpResponse.addHeader(String name,
String value);
调用参数:
- name: String, 指定要添加的键值
- value: String, 指定要添加的数据
setHeader
设定一个消息头,设定数据将修改键值所对应的第一个数值,并清除相同键值的其余消息头
1HttpResponse.setHeader(Object map);
调用参数:
- map: Object, 指定要设定的键值数据字典
设定指定名称的一组消息头,设定数据将修改键值所对应的数值,并清除相同键值的其余消息头
1
2HttpResponse.setHeader(String name,
Array values);
调用参数:
- name: String, 指定要设定的键值
- values: Array, 指定要设定的一组数据
设定一个消息头,设定数据将修改键值所对应的第一个数值,并清除相同键值的其余消息头
1
2HttpResponse.setHeader(String name,
String value);
调用参数:
- name: String, 指定要设定的键值
- value: String, 指定要设定的数据
removeHeader
删除指定键值的全部消息头
1HttpResponse.removeHeader(String name);
调用参数:
- name: String, 指定要删除的键值
read
从流内读取指定大小的数据,此方法为 body 相应方法的别名
1Buffer HttpResponse.read(Integer bytes = -1) async;
调用参数:
- bytes: Integer, 指定要读取的数据量,缺省为读取随机大小的数据块,读出的数据尺寸取决于设备
返回结果:
- Buffer, 返回从流内读取的数据,若无数据可读,或者连接中断,则返回 null
readAll
从流内读取剩余的全部数据,此方法为 body 相应方法的别名
1Buffer HttpResponse.readAll() async;
返回结果:
- Buffer, 返回从流内读取的数据,若无数据可读,或者连接中断,则返回 null
write
写入给定的数据,此方法为 body 相应方法的别名
1HttpResponse.write(Buffer data) async;
调用参数:
- data: Buffer, 给定要写入的数据
json
以 JSON 编码写入给定的数据
1Value HttpResponse.json(Value data);
调用参数:
- data: Value, 给定要写入的数据
返回结果:
- Value, 此方法不会返回数据
以 JSON 编码解析消息中的数据
1Value HttpResponse.json();
返回结果:
- Value, 返回解析的结果
pack
以 msgpack 编码写入给定的数据
1Value HttpResponse.pack(Value data);
调用参数:
- data: Value, 给定要写入的数据
返回结果:
- Value, 此方法不会返回数据
以 msgpack 编码解析消息中的数据
1Value HttpResponse.pack();
返回结果:
- Value, 返回解析的结果
end
设置当前消息处理结束,Chain 处理器不再继续后面的事务
1HttpResponse.end();
isEnded
查询当前消息是否结束
1Boolean HttpResponse.isEnded();
返回结果:
- Boolean, 结束则返回 true
clear
清除消息的内容
1HttpResponse.clear();
sendTo
发送格式化消息到给定的流对象
1HttpResponse.sendTo(Stream stm) async;
调用参数:
- stm: Stream, 指定接收格式化消息的流对象
readFrom
从给定的缓存流对象中读取格式化消息,并解析填充对象
1HttpResponse.readFrom(Stream stm) async;
调用参数:
- stm: Stream, 指定读取格式化消息的流对象
toString
返回对象的字符串表示,一般返回 "[Native Object]",对象可以根据自己的特性重新实现
1String HttpResponse.toString();
返回结果:
- String, 返回对象的字符串表示
toJSON
返回对象的 JSON 格式表示,一般返回对象定义的可读属性集合
1Value HttpResponse.toJSON(String key = "");
调用参数:
- key: String, 未使用
返回结果:
- Value, 返回包含可 JSON 序列化的值