Node.jsを用いた簡易Webサーバの構築において、「リクエストとレスポンスの処理」はHTTP通信の中心的な役割を果たします。以下にその仕組みと実装方法について詳しく説明します。
1. リクエスト(request)の処理とは
クライアント(ブラウザやAPIクライアントなど)からサーバに送信される情報を受け取る工程です。
Node.jsでは、http.createServer()のコールバック関数内で第1引数として渡されるreq(IncomingMessageオブジェクト)を通して取得します。
主なプロパティ
-
req.method:HTTPメソッド(例:GET、POST) -
req.url:アクセスされたパス(例:/about) -
req.headers:HTTPヘッダ情報(オブジェクト形式) -
req.on('data', callback):POST等で送信されたボディデータの受信 -
req.on('end', callback):全データの受信完了
2. レスポンス(response)の処理とは
サーバがクライアントに返す応答の内容を構築・送信する工程です。
Node.jsでは、コールバック関数内の第2引数res(ServerResponseオブジェクト)を使用します。
主なメソッド
-
res.writeHead(statusCode, headers):ステータスコードとヘッダを設定 -
res.write(data):ボディにデータを書き込む(複数回可能) -
res.end([data]):レスポンスの送信を完了する(省略可)
3. サンプルコードでの流れ
処理の概要
-
サーバは常にリクエストを監視し、内容に応じて異なるレスポンスを返す。
-
req.urlとreq.methodを条件分岐してルーティング処理を実現。 -
適切なHTTPステータスコード(例:200、404)とヘッダを設定。
4. 応用的なポイント
-
POSTリクエストのボディを扱う場合は、
req.on('data')とreq.on('end')を用いて非同期に処理します。 -
JSONレスポンスを返すには、
Content-Type: application/jsonとJSON.stringify()が必要です。 -
セキュリティ上、
res.writeHead()で正しいContent-Typeを明示することが重要です。
まとめ
Node.jsではhttpモジュールを用いて低レベルでHTTP通信を制御できます。リクエストとレスポンスはIncomingMessageとServerResponseというオブジェクトを介して扱われ、条件に応じた柔軟なレスポンスを返すことが可能です。これにより、Web APIやWebアプリケーションの基本的なサーバ処理を実装できます。
ChatGPT4o 生成日:2025/06/25