From ecf620d6ac033dd0c566633855fa0ab75c7003b3 Mon Sep 17 00:00:00 2001 From: "ry.yamafuji" Date: Fri, 21 Mar 2025 00:03:36 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B5=E3=83=BC=E3=83=90=E3=83=BC=E8=B5=B7?= =?UTF-8?q?=E5=8B=95=E6=96=B9=E6=B3=95=E3=81=AB=E3=81=A4=E3=81=84=E3=81=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/httpserver.md | 77 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/docs/httpserver.md b/docs/httpserver.md index 2e43287..19145c8 100644 --- a/docs/httpserver.md +++ b/docs/httpserver.md @@ -1,6 +1,9 @@ -## NodeでHttpサーバーを起動する方法 +# [Node.js]NodeでHttpサーバーを起動及び構築する方法 -### `http-server`を使う +## `http-server`を使う場合 + +http-serverはNode.js のシンプルな静的ファイルサーバーです。 +インストールすれば簡単にローカルでファイルをホスティングできます。 ```sh # http-server をグローバルインストール(初回のみ) @@ -12,4 +15,72 @@ cd src/front # サーバー起動(デフォルトは http://localhost:8080) http-server # http-server -p 3000 -``` \ No newline at end of file +``` + +## `http`モジュールを使う場合 + +* Node.jsの標準機能なので追加ライブラリなしで動作 +* 軽量でシンプルな HTTPサーバーをすぐ作れる +* ルーティング機能がなく、URLごとに手動で条件分岐が必要 +* ミドルウェア機能(ログ・認証・エラーハンドリング)がない +* 中~大規模開発には向かない(Expressのほうが便利) + + +```js +const http = require('http'); // httpモジュールをインポート + +// サーバーを作成 +const httpserver = http.createServer((req, res) => { + res.writeHead(200, { 'Content-Type': 'text/plain' }); // HTTPステータス 200 とヘッダーを設定 + res.end('Hello, Node.js Server!'); // クライアントへレスポンスを送信 +}); + +// ポート3000でサーバーを起動 +httpserver.listen(3000, () => { + console.log('Server running at http://localhost:3000'); +}); +``` + + +## `Express`を使う場合 + +xpressはNode.jsの主要なWebフレームワークで +APIサーバーや動的ページの生成にも対応できます。 + +### インストール方法 + +```sh +# プロジェクトフォルダを作成して移動 +mkdir sample-express-app && cd sample-express-app +# npm 初期化 +npm init -y +# Express インストール +npm install express + +# `server.js` を作成して、以下を記述 +node server.js +``` + +### サーバースクリプト + +`server.js`を作成する + +```js +// server.js +const express = require('express'); +const app = express(); +const port = 3000; + +// 静的ファイルを提供 +app.use(express.static('public')); + +// ルートエンドポイント +app.get('/', (req, res) => { + res.send('Hello, Express!'); +}); + +// サーバー起動 +app.listen(port, () => { + console.log(`Server running at http://localhost:${port}`); +}); +```