見出し画像

[Dart]HTTPサーバーの作り方

HTTPサーバーは、WebクライアントとHTTP(Hyper Text Transfer Protocol)によって情報通信をするプログラムのことで、Webサーバーとも言われます。

HTTPの定義は、以下となります。

WebサーバとWebクライアントの間でデータの送受信を行うために用いられるプロトコル(通信規約)

https://e-words.jp/w/HTTP.html

Apache HTTPサーバーなど、オープンソースのソフトウェアをダウンロードしてHTTPサーバーを導入することはできますが、今回はDart言語を使ったHTTPサーバーの作り方をご紹介します。

コード例

DartでHTTPサーバーを作るためには、dart:ioライブラリが使えます。
このライブラリは、ファイル、ソケット、HTTPなどのI/O機能を提供しています。

HTTPサーバーを作るファイルに以下を追加

import 'dart:io';

コード全体はこちら

///  /project/lib/test.dart
import 'dart:io';

void main() async {
  await httpServer();
}

Future<void> httpServer() async {
  var server = await HttpServer.bind(
    '127.0.0.1',
    8080,
  );
  await for (HttpRequest request in server) {
    request.response
      ..write('Hello!')
      ..close();
  }
}

main()
HTTPサーバーを起動するhttpServer()を実行します。

httpServer()
serverという変数にHttpServer.bind( '127.0.0.1', 8080)を渡しています。

HttpServer.bind()
HttpServer.bind('指定したアドレス', 'ポート番号')を表しており、指定されたIPアドレス(ここでは127.0.0.1)とポート番号(ここでは8080)でHTTPサーバーを起動します。

await for (HttpRequest request in server){}
HTTPサーバーに新しいHTTPリクエストが来るたびに{}内を実行

   await for (HttpRequest request in server) {
    request.response
      ..write('Hello!')
      ..close();
  }

request.response..write('Hello!')..close();
HttpResponseクラスのrequest.responseでHello!というHTTPレスポンスを返します。

ここまで書けた状態で、このtest.dartファイルがあるディレクトリ(例:cd lib)まで移動し、以下を実行するとHTTPサーバーが起動します。

$ cd lib
$ dart run test.dart

そしてPCのブラウザでhttp://127.0.0.1:8080/に接続し、アクセスすると「Hello!」というメッセージが表示されています。これでサーバー作成が成功しました。

http://127.0.0.1:8080/

いいなと思ったら応援しよう!