dart:io
庫中HttpServer
類的用法介紹如下。
使用 HTTP 協議交付內容(例如網頁)的服務器。
注意:HttpServer 提供低級 HTTP 函數。我們建議用戶評估 Write HTTP servers on dart.dev 中討論的高級 API。
HttpServer
是提供HttpRequest 對象的Stream。每個HttpRequest
都有一個關聯的HttpResponse 對象。服務器通過寫入該HttpResponse 對象來響應請求。以下示例顯示如何將 HttpServer
綁定到端口 80(HTTP 服務器的標準端口)上的 IPv6 InternetAddress 以及如何偵聽請求。端口 80 是默認的 HTTP 端口。但是,在大多數係統上訪問它需要super-user 權限。對於本地測試,請考慮使用非保留端口(1024 及以上)。
import 'dart:io';
void main() async {
var server = await HttpServer.bind(InternetAddress.anyIPv6, 80);
await server.forEach((HttpRequest request) {
request.response.write('Hello, world!');
request.response.close();
});
}
不完整的請求(其中缺少全部或部分標頭)將被忽略,並且不會為它們生成異常或 HttpRequest 對象。同樣,當寫入 HttpResponse 時,任何 Socket 異常都將被忽略,並且任何未來的寫入都將被忽略。
HttpRequest 公開請求標頭並提供請求主體(如果存在)作為數據流。如果正文未讀,則在服務器寫入HttpResponse 或關閉它時將其耗盡。
使用安全的 HTTPS 連接綁定
使用 bindSecure 創建 HTTPS 服務器。
服務器向客戶端提供證書。證書鏈和私鑰在傳遞給 bindSecure 的 SecurityContext 對象中設置。
import 'dart:io';
void main() async {
var chain =
Platform.script.resolve('certificates/server_chain.pem').toFilePath();
var key = Platform.script.resolve('certificates/server_key.pem').toFilePath();
var context = SecurityContext()
..useCertificateChain(chain)
..usePrivateKey(key, password: 'dartdart');
var server =
await HttpServer.bindSecure(InternetAddress.anyIPv6, 443, context);
await server.forEach((HttpRequest request) {
request.response.write('Hello, world!');
request.response.close();
});
}
證書和 key 是 PEM 文件,可以使用 OpenSSL 中的工具創建和管理。
- 實現的類型
相關用法
- Dart HttpServer.defaultResponseHeaders用法及代碼示例
- Dart HttpRequest.postFormData用法及代碼示例
- Dart HttpOverrides用法及代碼示例
- Dart HttpClient.findProxy用法及代碼示例
- Dart HttpClientRequest用法及代碼示例
- Dart HttpClient用法及代碼示例
- Dart HttpRequest.request用法及代碼示例
- Dart HttpClient.findProxyFromEnvironment用法及代碼示例
- Dart HttpClientResponse用法及代碼示例
- Dart HttpDate.parse用法及代碼示例
- Dart HttpClient.connectionFactory用法及代碼示例
- Dart HttpRequest用法及代碼示例
- Dart HttpClientRequest.followRedirects用法及代碼示例
- Dart HttpHeaders用法及代碼示例
- Dart HttpClient.keyLog用法及代碼示例
- Dart HttpRequest.getString用法及代碼示例
- Dart HttpRequest構造函數用法及代碼示例
- Dart HttpClientRequest.abort用法及代碼示例
- Dart HttpResponse用法及代碼示例
- Dart HtmlCollection.last用法及代碼示例
- Dart HtmlEscape用法及代碼示例
- Dart HtmlEscapeMode用法及代碼示例
- Dart HtmlCollection.elementAt用法及代碼示例
- Dart HtmlCollection.length用法及代碼示例
- Dart HtmlDocument.registerElement2用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 HttpServer class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。