Node.js は、V8 エンジンに基づく JavaScript ランタイム環境であり、高性能ネットワーク アプリケーションを構築するための強力なモジュールとツールを多数提供します。中でもNode.jsのWebモジュールは重要なモジュールであり、HTTPリクエスト、レスポンス、ルーティング、ミドルウェアなどを処理するための一連の機能やAPIを提供します。この記事では、Node.js Web モジュールのさまざまな使用法と一般的なシナリオについて詳しく説明します。
Webモジュールをインポートする
Node.js Web モジュールを使用するには、まずそれをインポートする必要があります。Node.js では、Web モジュールが呼び出されhttp
、次のステートメントを使用してインポートできます。
const http = require('http');
インポート後、http
オブジェクトを使用して Web モジュールのさまざまなメソッドや API を呼び出すことができます。
HTTPサーバーを作成する
Node.js では、http.createServer()
メソッドを使用して HTTP サーバーを作成できます。このメソッドは、各受信 HTTP リクエストを処理するパラメータとしてコールバック関数を受け取ります。
簡単な例を次に示します。
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!');
});
server.listen(3000, '127.0.0.1', () => {
console.log('Server is running at http://127.0.0.1:3000/');
});
上の例では、HTTP サーバーを作成し、各受信リクエストを処理するコールバック関数を指定しました。コールバック関数には、ステータスコード、ヘッダー情報、レスポンスの内容を設定し、res.end()
メソッドを通じてレスポンスを終了します。
最後に、このメソッドを使用して、server.listen()
サーバーがリッスンするポート番号と IP アドレスを指定します。コールバック関数では、サーバーが正常に起動したことを示すプロンプト メッセージを出力します。
HTTPリクエストを処理する
HTTP サーバーでは、さまざまなコールバック関数を使用して、さまざまな種類の HTTP リクエストを処理できます。たとえば、リクエストの URL パスに従って対応する操作を実行したり、リクエストのメソッド (GET、POST、PUT など) に従って異なる処理ロジックを選択したりできます。
以下は、異なる URL パスに基づいて異なるコンテンツを返す方法を示す簡単な例です。
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Home Page');
} else if (req.url === '/about') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('About Page');
} else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('Not Found');
}
});
server.listen(3000, '127.0.0.1', () => {
console.log('Server is running at http://127.0.0.1:3000/');
});
上記の例では、req.url
の値を判断してさまざまな演算を実行します。URL パスが の場合は/
戻り、 'Home Page'
URL パスが の場合は/about
戻り'About Page'
、それ以外の場合は を返します'Not Found'
。必要に応じて、ステータス コードと応答のヘッダー情報を設定することもできます。
ミドルウェアを使用する
Node.js では、ミドルウェア (Middleware) は、HTTP リクエストとレスポンスを処理し、それらの間で一連の操作を実行するための強力なメカニズムです。ミドルウェアを介して、リクエストのロギング、ルーティング処理、認証などのいくつかの一般的な機能を実装できます。
Node.js Web モジュールは、http.createServer()
ミドルウェア関数を登録するためのメソッドの 2 番目のパラメーターを提供します。ミドルウェア関数は、要求オブジェクトreq
、応答オブジェクトres
、次のミドルウェア関数の 3 つのパラメータを受け取りますnext
。
以下は、ミドルウェアを使用してリクエストをログに記録する方法を示す簡単な例です。
const http = require('http');
function logMiddleware(req, res, next) {
console.log(`[${
new Date().toLocaleString()}] ${
req.method} ${
req.url}`);
next();
}
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!');
});
server.use(logMiddleware);
server.listen(3000, '127.0.0.1', () => {
console.log('Server is running at http://127.0.0.1:3000/');
});
上の例では、logMiddleware
リクエストを記録するために呼び出されるミドルウェア関数を定義しました。各リクエストがサーバーに到着すると、ミドルウェア関数が呼び出され、リクエストされたメソッドと URL が出力されます。
サーバー作成時に、server.use()
メソッドを使用してミドルウェア機能を登録しました。このように、各リクエストは最初にミドルウェア機能を通過し、その後後続の処理ロジックを実行します。
要約する
Node.js Web モジュールは、高パフォーマンスの Web アプリケーションを構築するための一連の関数と API を提供します。Web モジュールを適切に使用することで、HTTP サーバーの作成、HTTP リクエストと応答の処理、ミドルウェアを使用した共通機能の実装などが簡単に行えます。この記事が Node.js Web モジュールを深く理解し、実際のプロジェクトで柔軟に活用できるようになれば幸いです。