Express.jsでのルートの作成と管理
メニューを表示するにはスワイプしてください
Express.jsでルートを作成する実用的な例を、さらに詳しく見ていきます。
基本的なルート
異なるHTTPメソッド用のルートを持つシンプルなExpress.jsアプリケーションの作成例。各ルートは特定のHTTPリクエストを処理し、クライアントにレスポンスを返します。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('This is the homepage.');
});
app.post('/users', (req, res) => {
// Handle user creation logic here.
res.send('User created.');
});
app.put('/users/:id', (req, res) => {
// Handle user update logic here.
res.send(`User ${req.params.id} updated.`);
});
app.delete('/users/:id', (req, res) => {
// Handle user deletion logic here.
res.send(`User ${req.params.id} deleted.`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
- GETルート: このルートはルートURL(
/)へのGETリクエストに応答します。アプリケーションのホームページにアクセスしたユーザーには「This is the homepage.」というメッセージが表示されます。 - POSTルート: このルートは
/usersURLへのPOSTリクエストに応答します。主に新しいユーザーレコードの作成に使用されます。ルート内にはユーザー作成処理用のコメントがあり、実際の作成ロジックに置き換えることができます。 - PUTルート: このルートは
/users/:idURLへのPUTリクエストに応答します。:idパラメータに基づいてユーザーレコードを更新するために設計されています。POSTルートと同様に、ユーザー更新処理用のコメントが含まれています。 - DELETEルート: このルートは
/users/:idURLへのDELETEリクエストに応答します。:idパラメータに基づいてユーザーレコードを削除するために使用されます。他のルートと同様に、ユーザー削除処理用のコメントが含まれています。
注意
URLについて不明な点がある場合や、概念を復習したい場合は、次の記事を参照してください: URL vs URI vs URN
URLパラメータの処理
URLパラメータを処理するルートの作成に注目します。URLパラメータは、サーバーにデータを渡すために使用できるURLの動的な部分です。この例の動作は以下の通りです:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
app.get('/users/:id', ...)を使用してルートを定義します。ここで:idはURLパラメータです。つまり、ユーザーが/users/123のようなURLにアクセスした場合、req.params.id変数には123が格納されます。- ルートハンドラ内で、
:idパラメータにはreq.params.idを使ってアクセスします。 - コメント部分は、URLパラメータから取得した
userIdをもとにユーザーデータを取得するロジックに置き換えることができます。 - 最後に、
:idパラメータで特定されたユーザー情報をクライアントに返します。
ルートの順序と優先順位
ルートが定義される順序は重要であり、Express は「最初に一致したものが優先される」戦略を採用しています。最初に一致したルートが実行されます。次の例では、特定のルートとキャッチオールルートの両方があるシナリオを示します。
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
app.get('/users/*', (req, res) => {
// Handle generic user-related requests.
res.send('User-related request.');
});
- 最初のルート
app.get('/users/:id', ...)は、/users/123のような URL に応答する特定のルートです。特定のユーザー ID を持つリクエストを処理します。 - 2 番目のルート
app.get('/users/*', ...)は、一般的なユーザー関連リクエストのためのキャッチオールルートです。ワイルドカード(*)を使用して/users/で始まる任意の URL(例:/users/settings)に一致します。
この場合、順序が非常に重要です。特定のルートはキャッチオールルートよりも前に定義する必要があり、優先的に処理されます。もしキャッチオールルートを先に定義すると、/users/ で始まるすべての URL に一致してしまい、特定のユーザー ID を持つリクエストは処理されなくなります。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 3. 章 5
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 3. 章 5