Node.jsでHTTP Webサーバーを作成する Code 例:
⚡ スマートサマリー
Node.jsは、組み込みのhttpモジュールを使用して、わずか数行のコードで動作するWebサーバーを構築します。サーバーは指定されたポートで待機し、各リクエストに対してステータスコードとレスポンスボディで応答します。一方、別のコードが他のサイトからデータを取得します。

その Node.js このフレームワークは主にサーバーベースのアプリケーションを作成するために使用されます。ユーザーにコンテンツを提供するWebサーバーを簡単に構築できます。
サーバー関連のリクエストを処理するモジュールがいくつかあり、組み込みの http 中でも最も重要なモジュールは、Node.js を使用した基本的な Web サーバー アプリケーションの作成方法、そして別のサイトからデータを要求する方法についてです。
HTTPを使用したWebサーバーとしてのノード
それでは、最初のNode.jsアプリケーションを作成して実行する方法の例を見てみましょう。
アプリケーションは、ポート 7000 でリッスンするシンプルなサーバー モジュールを作成します。ブラウザからそのポートでリクエストが行われると、サーバーは こんにちは世界 顧客への対応。
Code 説明
- その
require関数は、 Javaスクリプト ファイルを実行し、エクスポートオブジェクトを返します。ここで、httpモジュール化することで、その機能がアプリケーション内で利用可能になります。 - サーバーアプリケーションは、シンプルな関数から作成されます。その関数は、リクエストがサーバーに到達するたびに実行されます。
- リクエストが受信されると、レスポンスはステータスとともに送信されます。 200これは、HTTPヘッダーにおける正常な応答を示す標準的なステータスコードです。
- レスポンスボディ自体は文字列です こんにちは世界.
server.listenアプリケーションはポート7000でクライアントからのリクエストを待ち受けます。使用可能なポートであればどれでも使用できます。
コマンドが正常に実行されると、ブラウザに以下の出力が表示されます。
出力
出力結果より:
- localhostにアクセスしています URL ポート7000では文字列が表示されます こんにちは世界 ページ内で。
- コードがポート7000を指定しているため、出力はそのポートにアクセスした場合にのみ表示されます。
参考までにコードを以下に示します。
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Node.js での GET リクエストの処理
Node.js では、別のサイトからデータを取得するために GET リクエストを行うのは簡単です。従来は、 request コマンドラインからインストールされたモジュール:
npm install request
このコマンドは、Node パッケージマネージャに必要なモジュールをダウンロードしてインストールするように指示します。インストールが成功すると、コマンドラインにインストールされたモジュール名とバージョンが次の形式で表示されます。 <name>@<version>.
上記のスナップショットでは、 request モジュールとそのバージョン番号がダウンロードされ、インストールされました。
Code 説明
- その
request前の手順でインストールしたモジュールは、ウェブサイトへのGETリクエストを行うために必要な機能を提供します。 - GETリクエストがサイトに送信され、レスポンスが到着するとコールバックが実行されます。コールバックは3つのパラメータを受け取ります。
- エラー — リクエスト中に発生したエラーを記録します。
- 世界の動き — レスポンスとともに返されるHTTPヘッダーを運びます。
- ボディ — レスポンスの全内容が含まれています。
- 受信したコンテンツ
bodyパラメータがコンソールに書き込まれます。
参考までにコードを以下に示します。
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
⚠️ 廃止のお知らせ: request モジュールは 2020年2月に完全に廃止されました そして、それ以降はアップデートされません。それでもインストールと実行はできるので、上記の例は既存のプロジェクトには有効ですが、 npm install request 非推奨警告が表示されるようになりました。新しいコードでは組み込みの機能を使用する必要があります。 fetch 次のセクションでその機能を示します。
Node.jsでネイティブのfetchを使用してHTTPリクエストを行う方法
Node にはグローバル fetch バージョン18以降、ブラウザが既に提供しているAPIと一致する関数です。パッケージのインストールは不要で、関数はPromiseを返すため、直接動作します。 async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 — check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
コールバック方式との3つの違いに注目する価値がある。まず、 fetch ネットワークレベルの障害でのみ拒否します。HTTP 404 または 500 は引き続き正常に解決されるため、 response.ok チェックが存在すること、そして移行時にそれを省略することが最も一般的な間違いである理由 request第二に、本文はレスポンスとともに配信されないため、明示的に読み取る必要があります。 response.text() プレーンテキストまたは response.json() JSON の場合、それぞれが独自のプロミスを返します。第三に、呼び出し全体がプロミスベースであるため、単一の try/catch リクエストと読み取られたボディの両方を対象とし、エラー優先のコールバックパラメータを完全に置き換えます。
Node 16以前のバージョンで実行する必要があるスクリプトの場合は、 node-fetch or axios その代わりに、どちらも同等のプロミスベースのインターフェースを公開しており、ランタイムがアップグレードされた後にインポート行を変更するだけで済むため、
request、fetch、axios:どれを使うべきか?
ほとんどのNode関連資料には3種類のHTTPクライアントが登場しますが、新規開発においてデフォルトとして適切なのはそのうちの1種類だけです。これらのクライアントは、メンテナンス状況、依存関係の必要性、エラー状態の通知方法などが異なるため、以下の表で比較しています。
| 側面 | 要求 | フェッチ(組み込み) | アクシオス |
|---|---|---|---|
| ステータス | 2020年以降非推奨 | コアで維持 | 積極的に維持されている |
| 設置 | npmパッケージ | ノード18+には該当なし | npmパッケージ |
| 形式 | エラー発生時のコールバック | 約束 | 約束 |
| JSON解析 | 手動、またはJSONオプション | response.json() による手動操作 | オートマチック |
| 404または500エラーで拒否 | いいえ | いいえ | はい |
fetch Nodeの最新バージョンでの新規プロジェクトの場合、依存関係を追加せず、開発者が既に知っているブラウザAPIと一致するため、これを選択します。 axios 自動JSON処理、リクエストインターセプター、またはエラー状態による拒否によって実際のコードを削減できる場合。 request 既にそれに依存しており、それを置き換える予定の既存アプリケーション内でのみ使用されます。
Node.jsサーバーでよく発生するエラーとその解決方法
初めてNodeサーバーを起動する際の失敗のほとんどは、サーバーコード自体ではなく、ポート、パス、または応答の欠如に起因します。
- EADDRINUSE: 別のプロセスが既にポートを占有しています。
netstat -ano | findstr :7000on Windowsまたはlsof -i :7000on macOS Linuxの場合は、そのプロセスを停止するか、別のポートを選択してください。 - 低ポートでのEACCES: 1024番未満のポートを使用するには、管理者権限が必要です。開発中は、3000番や7000番など、1024番より大きいポートを使用してください。
- ブラウザがフリーズして、読み込みが完了しない。 ハンドラーは呼び出しをしなかった
response.end()接続はタイムアウトするまで開いたままなので、ハンドラを通るすべてのパスは応答を終了させる必要があります。 - モジュール「http」が見つかりません。 ファイル名にスペルミスがあるか、スクリプトがNodeではなくブラウザで実行されています。コアモジュールはインストール不要です。
- 変更は表示されません。 Node は起動時に一度だけファイルを読み込みます。編集後は毎回プロセスを再起動するか、次のようなウォッチャーの下で実行してください。
node --watch server.js.




