http(HTTPサーバの作成)

Node.jsの「http」モジュールは、HTTPサーバやクライアントを作成するためのコアモジュールであり、外部ライブラリを使わずにWebサーバ機能を実装することができます。以下では、「http」モジュールの概要、基本的な使い方、主なメソッドやイベントについて詳しく説明します。


1. 「http」モジュールとは

Node.jsに組み込まれているコアモジュールの一つで、HTTP通信を行うためのインターフェースを提供します。http.createServer()を使ってHTTPサーバを構築したり、クライアントとしてHTTPリクエストを送信することも可能です。


2. HTTPサーバの基本的な作成方法

以下は、最もシンプルなHTTPサーバの例です:

javascript
const http = require('http'); const server = http.createServer((req, res) => { // レスポンスヘッダの設定 res.writeHead(200, { 'Content-Type': 'text/plain' }); // レスポンスボディの送信 res.end('Hello, World!\n'); }); // ポート番号3000で待機 server.listen(3000, () => { console.log('Server is running at http://localhost:3000/'); });

説明

  • http.createServer(callback):リクエストを受け取るたびに実行されるコールバック関数を定義し、サーバインスタンスを作成。

  • req:クライアントからのリクエスト情報(URL, メソッド, ヘッダなど)。

  • res:レスポンスを制御するオブジェクト。

  • res.writeHead(statusCode, headers):ステータスコードとレスポンスヘッダを設定。

  • res.end(data):レスポンスの終了とデータ送信。


3. 主なメソッドとプロパティ

サーバオブジェクト(http.Server

  • server.listen(port, callback):指定したポートで待機。

  • server.close():サーバの停止。

  • server.on('request', listener):HTTPリクエストを処理するイベント。

リクエストオブジェクト(http.IncomingMessage

  • req.method:HTTPメソッド(GET, POSTなど)。

  • req.url:リクエストされたURL。

  • req.headers:ヘッダ情報。

レスポンスオブジェクト(http.ServerResponse

  • res.writeHead(statusCode, headers):ステータスコードとヘッダを送信。

  • res.write(data):レスポンスボディの一部を送信。

  • res.end([data]):レスポンスを終了。


4. 応用:ルーティングの実装(簡易)

javascript
const http = require('http'); const server = http.createServer((req, res) => { if (req.url === '/') { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('ホームページです'); } else if (req.url === '/about') { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('自己紹介ページです'); } else { res.writeHead(404, { 'Content-Type': 'text/plain' }); res.end('ページが見つかりません'); } }); server.listen(3000, () => { console.log('http://localhost:3000/ でサーバ起動中'); });

5. 実用上の注意点

  • httpモジュールはシンプルですが、複雑なルーティングやテンプレートエンジンなどには向いていないため、Expressのようなフレームワークを使うことが多いです。

  • Content-Typeの適切な設定を忘れると、ブラウザでの表示が乱れることがあります。

  • セキュリティ、CORS、HTTPSなど高度な機能は別途対応が必要です。


まとめ

Node.jsのhttpモジュールは、Webサーバの仕組みを理解するのに最適なツールです。小規模な開発や学習目的では非常に有用であり、基本を理解した上で、より高機能なフレームワークに移行するのが一般的な流れです。

ChatGPT4o 生成日:2025/06/25