一个包含 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
- 请求体的内容长度。无设置器
- 请求中的 Cookie,来自 "Cookie" 头部。无设置器
-
first → Future<
Uint8List> - 此流的第一元素。无设置器继承
- hashCode → int
- 此对象的哈希码。无设置器继承
- headers → HttpHeaders
- 请求头部。无设置器
- isBroadcast → bool
- 此流是否为广播流。无设置器继承
-
isEmpty → Future<
bool> - 此流是否包含任何元素。无设置器继承
-
last → Future<
Uint8List> - 该流的最后一个元素。无设置器继承
-
length → Future<
int> - 该流中的元素数量。无设置器继承
- method → String
- 请求的方法,例如 'GET' 或 'POST'。无设置器
- persistentConnection → bool
- 客户端信号的长连接状态。无设置器
- protocolVersion → String
- 请求中使用的HTTP协议版本,可以是 "1.0" 或 "1.1"。无设置器
- requestedUri → Uri
- 请求的URI。无设置器
- response → HttpResponse
- 用于发送响应给客户端的HttpResponse对象。无设置器
- runtimeType → Type
- 对象运行时类型的表示。无设置器继承
- session → HttpSession
- 给定请求的会话。无设置器
-
single → Future<
Uint8List> - 该流的单个元素。无设置器继承
- uri → Uri
- 请求的URI。无设置器
方法
-
any(
bool test(Uint8List element)) → Future< bool> - 检查是否
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 - 将此流的的事件管道到
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< Set< Uint8List> > - 将此流的数据收集到一个 Set 中。继承
-
toString(
) → String - 该对象的字符串表示形式。继承
-
transform<
S> (StreamTransformer< ) → Stream<Uint8List, S> streamTransformerS> - 将
streamTransformer
应用到此流。继承 -
where(
bool test(Uint8List event)) → Stream< Uint8List> - 从该流创建一个新的流,丢弃一些元素。继承
运算符
-
operator ==(
Object other) → bool - 等于运算符。继承