私は通過つもりダートサーバのマニュアル。私はawait for
このようなHttpRequestができるようです:
import 'dart:io';
Future main() async {
var server = await HttpServer.bind(
InternetAddress.loopbackIPv4,
4040,
);
print('Listening on localhost:${server.port}');
await for (HttpRequest request in server) {
request.response.write('Hello, world!');
await request.response.close();
}
}
これは、HttpServerがStreamを実装しているためです。しかし、ストリームは値またはエラーのいずれかを返す可能性があるため、次のような例外をキャッチする必要があります。
try {
await for (HttpRequest request in server) {
request.response.write('Hello, world!');
await request.response.close();
}
} catch (e) {
// ???
}
しかし、どのような例外をキャッチできるかはわかりません。例外はリクエストから発生しますか(そして400レベルの応答を保証します)、それともサーバーから発生しますか(そして500レベルの応答を保証します)?または両方?
例外として、BAD_REQUESTステータスコードが設定されます。
} catch (e) {
// Try to send BAD_REQUEST response.
request.response.statusCode = HttpStatus.badRequest;
(ソースを参照)
それはそうなるでしょう400
(を参照badRequest
)。
その同じcatch
ブロックでは、例外はrethrow
nになります。これは、ストリームですべてのエラーを引き続き受信することを意味します。これはで発生しprocessRequest
、はですべてのリクエストを処理しますbind
。
また、のシンクに転送されるbind
ため、ストリームでエラーが発生します。
明示的な例外タイプは1つしか見つかりませんでした。
if (disposition == null) {
throw const HttpException(
"Mime Multipart doesn't contain a Content-Disposition header value");
}
if (encoding != null &&
!_transparentEncodings.contains(encoding.value.toLowerCase())) {
// TODO(ajohnsen): Support BASE64, etc.
throw HttpException('Unsupported contentTransferEncoding: '
'${encoding.value}');
}
(ソースを参照)
これらは両方ともHttpException
、S。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加