HttpRequest抽象 接口

一个包含 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();
}
实现类型

构造函数

HttpRequest()

属性

certificate X509Certificate?
发起请求的客户端的证书。
无设置器
connectionInfo HttpConnectionInfo?
有关客户端连接的信息。
无设置器
contentLength int
请求体内容的长度。
无设置器
cookies List<Cookie>
请求中的 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>
从当前流中创建一个新的流,丢弃一些元素。
继承

操作符

操作符 ==(Object other) bool
相等操作符。
继承