Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Express.jsでのルートの作成と管理 | Express.jsによるウェブアプリケーション開発
Node.jsとExpress.jsによるバックエンド開発

bookExpress.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ルート: このルートは/users URLへのPOSTリクエストに応答します。主に新しいユーザーレコードの作成に使用されます。ルート内にはユーザー作成処理用のコメントがあり、実際の作成ロジックに置き換えることができます。
  • PUTルート: このルートは/users/:id URLへのPUTリクエストに応答します。:idパラメータに基づいてユーザーレコードを更新するために設計されています。POSTルートと同様に、ユーザー更新処理用のコメントが含まれています。
  • DELETEルート: このルートは/users/:id URLへの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に質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  5
some-alt