一个包含 HTTP 请求内容和信息的服务器端对象。
HttpRequest
对象由一个 HttpServer 生成,该服务器在一个特定的主机和端口上监听 HTTP 请求。对于收到的每个请求,HttpServer(一个 Stream),生成一个 HttpRequest
对象并将其添加到流中。
HttpRequest
对象将请求体内容以字节列表流的形式传输。该对象还包含有关请求的信息,例如方法、URI 和头信息。
以下代码中,一个 HttpServer 监听 HTTP 请求。当服务器收到请求时,它使用 HttpRequest 对象的 method
属性来分发请求。
final HOST = InternetAddress.loopbackIPv4;
final PORT = 80;
HttpServer.bind(HOST, PORT).then((_server) {
_server.listen((HttpRequest request) {
switch (request.method) {
case 'GET':
handleGetRequest(request);
break;
case 'POST':
...
}
},
onError: handleError); // listen() failed.
}).catchError(handleError);
HttpRequest 对象通过 response 属性提供了对相关 HttpResponse 对象的访问。服务器将响应写入 HttpResponse 对象的主体。例如,以下是一个响应请求的函数
void handleGetRequest(HttpRequest req) {
HttpResponse res = req.response;
res.write('Received request ${req.method}: ${req.uri.path}');
res.close();
}
构造函数
属性
- certificate → X509Certificate?
- 发起请求的客户端的证书。无设置器
- connectionInfo → HttpConnectionInfo?
- 有关客户端连接的信息。无设置器
- contentLength → int
- 请求体内容的长度。无设置器
- 请求中的 cookies,来自 "Cookie" 头部。无设置器
-
first → Future<
Uint8List> - 此流的第一个元素。无设置器继承
- hashCode → int
- 此对象的哈希码。无设置器继承
- headers → HttpHeaders
- 请求头。无设置器
- isBroadcast → bool
- 是否此 流 是一个 广播 流。无设置器继承
-
isEmpty → Future<
bool> - 此流是否包含任何元素。无设置器继承
-
last → Future<
Uint8List> - 此流的最后一个元素。无设置器继承
-
length → Future<
int> - 此流中的元素数量。无设置器继承
- method → String
- 请求的方法,例如 'GET' 或 'POST'。无设置器
- 持久连接 → 布尔
- 客户端信号化的持久连接状态。无设置器
- 协议版本 → 字符串
- 请求中使用的 HTTP 协议版本,可以是 "1.0" 或 "1.1"。无设置器
- 请求 URI → Uri
- 请求的 URI。无设置器
- 响应 → HttpResponse
- HttpResponse 对象,用于向客户端发送响应。无设置器
- runtimeType → Type
- 对象运行时类型的表示。无设置器继承
- 会话 → HttpSession
- 给定请求的会话。无设置器
-
single → Future<
Uint8List> - 此流的单个元素。无设置器继承
- uri → Uri
- 请求的 URI。无设置器
方法
-
any(
布尔 test(Uint8List element)) → Future< 布尔> - 检查
test
是否接受此流提供的任何元素。继承 -
asBroadcastStream(
{void onListen(StreamSubscription< Uint8List> subscription)?, void onCancel(StreamSubscription<Uint8List> subscription)?}) → Stream<Uint8List> - 返回一个多订阅流,它产生与此流相同的事件。继承
-
asyncExpand<
E> (Stream< E> ? convert(Uint8List event)) → Stream<E> - 将每个元素转换为一系列异步事件。继承
-
asyncMap<
E> (FutureOr< E> convert(Uint8List event)) → Stream<E> - 创建一个新的流,该流的每个数据事件都会异步映射为一个新的事件。继承
-
cast<
R> () → Stream< R> - 将此流适配为
Stream<R>
。继承 -
contains(
Object? needle) → Future< bool> - 返回
needle
是否出现在此流提供的数据元素中。继承 -
distinct(
[bool equals(Uint8List previous, Uint8List next)?]) → Stream< Uint8List> - 如果数据事件与之前的事件相等,则跳过数据事件。继承
-
drain<
E> ([E? futureValue]) → Future< E> - 丢弃此流上的所有数据,但在完成或发生错误时发出信号。继承
-
elementAt(
int index) → Future< Uint8List> - 返回此流的第
index
个数据事件的值。继承 -
every(
bool test(Uint8List element)) → Future< bool> - 检查是否
test
接受此流提供的所有元素。继承 -
expand<
S> (Iterable< S> convert(Uint8List element)) → Stream<S> - 将此流的每个元素转换为元素序列。继承
-
firstWhere(
bool test(Uint8List element), {Uint8List orElse()?}) → Future< Uint8List> - 查找此流中匹配
test
的第一个元素。继承 -
fold<
S> (S initialValue, S combine(S previous, Uint8List element)) → Future< S> - 通过重复应用
combine
来组合一系列值。继承 -
forEach(
void action(Uint8List element)) → Future< void> - 对每个元素执行
action
。继承 -
handleError(
Function onError, {bool test(dynamic error)?}) → Stream< Uint8List> - 创建一个包装组流,该流拦截来自此流的某些错误。继承
-
join(
[String separator = ""]) → Future< String> - 将元素的字符串表示形式组合成一个单一的字符串。继承
-
lastWhere(
bool test(Uint8List element), {Uint8List orElse()?}) → Future< Uint8List> - 查找此流中匹配
test
的最后一个元素。继承 -
listen(
void onData(Uint8List event)?, {Function? onError, void onDone()?, bool? cancelOnError}) → StreamSubscription< Uint8List> - 为此流添加一个订阅。继承
-
map<
S> (S convert(Uint8List event)) → Stream< S> - 将此流的每个元素转换成新的流事件。继承
-
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时调用。继承
-
pipe(
StreamConsumer< Uint8List> streamConsumer) → Future - 将此流的 eventos 通过
streamConsumer
管道传输。继承 -
reduce(
Uint8List combine(Uint8List previous, Uint8List element)) → Future< Uint8List> - 通过重复应用
combine
来组合一系列值。继承 -
singleWhere(
bool test(Uint8List element), {Uint8List orElse()?}) → Future< Uint8List> - 查找与此流匹配的单个元素
test
。继承 -
skip(
int count) → Stream< Uint8List> - 跳过此流的前
count
个数据事件。继承 -
skipWhile(
bool test(Uint8List element)) → Stream< Uint8List> - 跳过与
test
模式匹配的从该流中发出的数据事件。继承 -
take(
int count) → Stream< Uint8List> - 最多提供该流的前
count
个数据事件。继承 -
takeWhile(
bool test(Uint8List element)) → Stream< Uint8List> - 当
test
成功时,传递数据事件。继承 -
timeout(
Duration timeLimit, {void onTimeout(EventSink< Uint8List> sink)?}) → Stream<Uint8List> - 创建一个新的流,其事件与这个流相同。继承
-
toList(
) → Future< List< Uint8List> > - 将这个流的所有元素收集到一个
List
中。继承 -
toSet(
) → Future< SetUint8List>> - 将这个流的数据收集到一个
Set
中。继承 -
toString(
) → String - 该对象的字符串表示形式。继承
-
transform<
S> (StreamTransformer< Uint8List, S> streamTransformer) → Stream<S> - 将
streamTransformer
应用到此流。继承 -
where(
bool test(Uint8List event)) → Stream< Uint8List> - 从当前流中创建一个新的流,丢弃一些元素。继承