[Dart]HTTPサーバーにHTTPリクエストを送る
Android, iOSなどを開発できるクロスプラットフォームであるFlutterでは、プログラミング言語であるDartが使われています。
このDartでは色んなことができますが、今回はDartで実装したHTTPサーバーにリクエスト、レスポンスを送る方法についてご紹介します♪
HTTPサーバーの立て方などは以下記事を参考
まずはDartプロジェクトを作成します。
任意のディレクトリで、以下を実行してDartプロジェクトを起動します。
% dart create <myapp> //<>は任意のプロジェクト名にする。今回はmyappという名前にする
% cd myapp // myappに移動
% dart run // dartプロジェクトを起動
Building package executable...
Built myapp:myapp.
Hello world: 42!
作成したDartプロジェクトにある/bin/myapp.dartが起動し、Hello world: 42!とターミナルに表示されたらOKです。
/// myapp.dart
import 'package:myapp/myapp.dart' as myapp;
void main(List<String> arguments) {
print('Hello world: ${myapp.calculate()}!');
}
Dartプロジェクトのはじめ方については、公式ドキュメントを参照。
今回はDartの標準ライブラリである 'dart:io' を使用します。
myapp.dartの既存のコードを消して、dart:ioをインポート
// myapp.dart
import 'dart:io';
そして以下のサンプルコードを記載します。
// myapp.dart
import 'dart:io';
Future main() async {
final server = await HttpServer.bind('localhost', 8080);
print('Server started on port: ${server.port}');
await for (HttpRequest request in server) {
handleRequest(request);
}
}
void handleRequest(HttpRequest request) {
print('Received request: ${request.method} ${request.uri.path}');
request.response
..headers.contentType = ContentType('text', 'plain', charset: 'utf-8')
..write('Hello, World!')
..close();
}
このコードでは、localhostのポート8080でHTTPサーバーが起動します。HTTPサーバーのアドレスは、http://localhost:8080になります。
そして、サーバーにリクエストが届くたびに、handleRequest関数が呼び出出されます。この関数は、リクエストを受け取り、テキスト形式のレスポンスを生成してクライアントに返します。
それでは試してみましょう。
dart runすると、port8080でサーバーが立ち上がりました。
% dart run
Built myapp:myapp.
Server started on port: 8080
ターミナルをもう一つ起動し、curlコマンドを実行します。
curl http://localhost:8080
このコマンドは、http://localhost:8080 に対してHTTP GETリクエストを送信し、レスポンスを受け取ってコンソールに表示してくれます。
Hello, World!と表示され、サーバーがリクエストを受け取り、レスポンスを返した事がわかりました。
% curl http://localhost:8080
Hello, World!