Node.js ExpressでWeb開発をレベルアップ!GETリクエスト処理の基礎から応用まで
Node.js ExpressにおけるHTTP GETリクエストのわかりやすい解説
このチュートリアルでは、Node.js と Express フレームワークを使用して HTTP GET リクエスト を処理する方法を、初心者でも理解しやすいように説明します。
HTTP GET リクエストは、Webサーバーからリソースを取得するために使用される基本的なHTTPメソッドです。例えば、WebブラウザでURLを入力すると、ブラウザはサーバーにGETリクエストを送信し、サーバーは対応するWebページなどのリソースを送信します。
Node.js ExpressでGETリクエストを処理する
Expressは、Node.js用の軽量で柔軟なWebアプリケーションフレームワークです。Expressを使用してGETリクエストを処理するには、以下の手順が必要です。
- 必要なパッケージをインストールする:
npm install express
- Expressアプリケーションを作成する:
const express = require('express');
const app = express();
- GETリクエスト用のルートを定義する:
app.get('/', (req, res) => {
// リクエスト処理を行う
res.send('Hello from Node.js Express!');
});
- サーバーを起動する:
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
上記のコードを実行すると、ポート3000でサーバーが起動し、ブラウザで http://localhost:3000
にアクセスすると、 "Hello from Node.js Express!" というメッセージが表示されます。
GETリクエストのパラメータ
GETリクエストには、URLクエリ文字列を使用してパラメータを渡すことができます。例えば、以下のURLにアクセスすると、name
パラメータの値がJohn Doe
となります。
http://localhost:3000/?name=John%20Doe
Expressでは、req.query
オブジェクトを使用してパラメータにアクセスできます。
app.get('/', (req, res) => {
const name = req.query.name;
res.send(`Hello ${name} from Node.js Express!`);
});
パスパラメータを使用して、リクエストURL内の特定の部分にアクセスすることもできます。例えば、以下のURLにアクセスすると、id
パラメータの値が123
となります。
http://localhost:3000/users/123
app.get('/users/:id', (req, res) => {
const id = req.params.id;
res.send(`User with ID ${id} found`);
});
このチュートリアルでは、Node.js Expressを使用してHTTP GETリクエストを処理する基本的な方法を説明しました。詳細については、Expressの公式ドキュメントを参照してください: https://expressjs.com/
補足情報
- 上記は基本的な例であり、より複雑なリクエスト処理にも対応できます。
- エラー処理、中間ウェア、テンプレートエンジンなど、Expressには他にも多くの機能があります。
- Node.jsとExpressは、Webアプリケーション開発に人気のある組み合わせです。
Node.js ExpressにおけるHTTP GETリクエストのサンプルコード
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
// ルートパスへのGETリクエストを処理
app.get('/', (req, res) => {
res.send('Hello from Node.js Express!');
});
// /users/:idへのGETリクエストを処理
app.get('/users/:id', (req, res) => {
const id = req.params.id;
res.send(`User with ID ${id} found`);
});
// サーバーを起動
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
説明
express
モジュールをrequire
し、app
インスタンスを作成します。- ポート番号を環境変数
PORT
またはデフォルト値3000
に設定します。 - ルートパス (
/
) へのGETリクエストを処理するルートを定義します。このルートにアクセスすると、Hello from Node.js Express!
というメッセージが返されます。 /users/:id
へのGETリクエストを処理するルートを定義します。このルートにアクセスすると、id
パラメータの値 (123
など) がreq.params.id
に格納され、User with ID ${id} found
というメッセージが返されます。- 指定したポートでサーバーを起動します。
実行方法
- 上記のコードを
app.js
などのファイルに保存します。 - ターミナルで以下のコマンドを実行します。
node app.js
補足
- Express には、エラー処理、中間ウェア、テンプレートエンジンなど、他にも多くの機能があります。
Node.js ExpressでHTTP GETリクエストを処理するその他の方法
ルートパラメータと正規表現:
app.get('/:resource/:id', (req, res) => {
const resource = req.params.resource;
const id = req.params.id;
if (resource === 'users') {
// ユーザー情報の処理
res.send(`User with ID ${id} found`);
} else if (resource === 'products') {
// 商品情報の処理
res.send(`Product with ID ${id} found`);
} else {
// リソースが見つからない場合の処理
res.status(404).send('Resource not found');
}
});
この例では、ルートパラメータ (resource
) を使用してリクエストされたリソースの種類を判別し、それに応じて処理を行います。正規表現を使用して、より複雑なURL構造を処理することもできます。
クエリパラメータ:
app.get('/users', (req, res) => {
const name = req.query.name;
const email = req.query.email;
if (name && email) {
// 名前とメールアドレスでユーザーを検索
res.send(`User found: ${name} (${email})`);
} else if (name) {
// 名前でユーザーを検索
res.send(`Users found with name: ${name}`);
} else {
// すべてのユーザーを取得
res.send('All users');
}
});
この例では、クエリパラメータ (name
と email
) を使用して、ユーザーを検索する方法を示します。複数のクエリパラメータを組み合わせて、より複雑な検索条件を指定することもできます。
ミドルウェア:
// 認証ミドルウェア
function authMiddleware(req, res, next) {
if (!req.headers['authorization']) {
res.status(401).send('Unauthorized');
return;
}
// ヘッダーに含まれる認証トークンを検証
next();
}
// ユーザー情報取得用ルート
app.get('/users/:id', authMiddleware, (req, res) => {
const id = req.params.id;
// ユーザー情報の処理
res.send(`User with ID ${id} found`);
});
この例では、ミドルウェアを使用して、ルートへのアクセスを制御する方法を示します。上記の authMiddleware
は、リクエストヘッダーに認証トークンが存在するかを確認し、存在しない場合はエラーを返します。認証トークンが有効であれば、next()
を呼び出して、次のミドルウェアまたはルートハンドラーに処理を移します。
サードパーティ製ライブラリ:
Express には、HTTPリクエスト処理をさらに簡略化できる様々なサードパーティ製ライブラリが存在します。以下に、いくつか例を挙げます:
これらのライブラリを使用することで、コードをより簡潔に記述し、メンテナンス性を向上させることができます。
Node.js ExpressでHTTP GETリクエストを処理するには、様々な方法があります。上記で紹介した方法はほんの一例であり、状況に応じて最適な方法を選択することが重要です。
javascript node.js express