Express.jsは、Node.jsのための最も人気のある軽量で柔軟なウェブフレームワークの一つです。この記事では、Expressフレームワークを使用して、リクエストをルーティングし、HTTPメソッドを処理する方法について、詳細かつ包括的に解説します。HTTPリクエストに対応するルート(エンドポイント)の作成方法、Expressで利用可能な異なるHTTPメソッド、およびそれらをどのように効果的に使用するかに焦点を当てます。
1. Expressフレームワークの基本的なセットアップ
まず、Expressをインストールし、基本的なサーバーをセットアップする方法を確認します。Node.jsがインストールされていることを前提に、以下の手順でExpressをプロジェクトに追加します。

bashnpm init -y npm install express
次に、シンプルなExpressアプリケーションを作成します。app.js
ファイルを作成し、以下のコードを入力します。
javascriptconst express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('こんにちは、Express!');
});
app.listen(port, () => {
console.log(`サーバーが http://localhost:${port} で起動しました`);
});
このコードは、/
(ルート)パスにアクセスしたときに「こんにちは、Express!」というメッセージを表示するシンプルなサーバーを構築します。
2. HTTPリクエストメソッド
HTTPリクエストメソッドは、クライアントからサーバーへのリクエストの種類を定義します。Expressでは、これらのメソッドを使用して、特定のルートに対応する処理を定義できます。代表的なHTTPメソッドには以下のものがあります。
2.1 GET
メソッド
GET
メソッドは、サーバーからリソースを取得するために使用されます。ルートを定義する際には、app.get()
メソッドを使用します。
javascriptapp.get('/users', (req, res) => {
res.send('ユーザーの一覧を取得');
});
このコードは、/users
というURLにGETリクエストが送信されると「ユーザーの一覧を取得」というメッセージを返します。
2.2 POST
メソッド
POST
メソッドは、サーバーにデータを送信して処理するために使用されます。フォームの送信やAPIリクエストなどに広く使用されます。Expressではapp.post()
を使用してルートを定義します。
javascriptapp.post('/users', (req, res) => {
res.send('新しいユーザーを作成');
});
上記のコードでは、/users
というURLにPOSTリクエストが送信されると「新しいユーザーを作成」というレスポンスを返します。
2.3 PUT
メソッド
PUT
メソッドは、指定したリソースを更新するために使用されます。通常、リソースの完全な更新に使用されます。Expressではapp.put()
でルートを定義します。
javascriptapp.put('/users/:id', (req, res) => {
res.send(`ユーザーID ${req.params.id} を更新`);
});
このコードでは、URLに含まれるユーザーIDを元に、そのユーザーを更新する処理を定義します。
2.4 DELETE
メソッド
DELETE
メソッドは、指定されたリソースを削除するために使用されます。Expressではapp.delete()
でルートを定義します。
javascriptapp.delete('/users/:id', (req, res) => {
res.send(`ユーザーID ${req.params.id} を削除`);
});
このコードでは、指定したユーザーIDに基づいてユーザーを削除する処理を実装します。
3. ルーティングとパラメータ
Expressでは、パラメータをURLに組み込むことができます。これにより、特定のリソースにアクセスする際に動的なデータを扱うことができます。例えば、特定のユーザーの情報を取得する場合、以下のようにパラメータを使用します。
javascriptapp.get('/users/:id', (req, res) => {
const userId = req.params.id;
res.send(`ユーザーID: ${userId} の詳細情報`);
});
この例では、/users/:id
というルートが定義されており、:id
部分は動的にユーザーIDを受け取るパラメータとして機能します。アクセスするURL例としては、/users/123
が考えられます。この場合、req.params.id
は123
に対応します。
4. クエリパラメータ
クエリパラメータは、URLの末尾に付け加えられる追加の情報で、通常は?key=value
の形式で指定されます。クエリパラメータを使うと、特定の条件に基づいたデータの取得が可能になります。
javascriptapp.get('/search', (req, res) => {
const query = req.query.q;
res.send(`検索キーワード: ${query}`);
});
例えば、URLが/search?q=express
の場合、req.query.q
はexpress
となります。
5. ミドルウェアの使用
Expressでは、リクエストがサーバーに到達した時点で処理を実行するために「ミドルウェア」を使用することができます。ミドルウェアはリクエストの処理を途中で介入し、レスポンスを変更したり、追加のロギングや認証を実行するために使われます。
例えば、リクエストの前にロギングを行うミドルウェアは以下のように定義できます。
javascriptapp.use((req, res, next) => {
console.log(`${req.method} リクエストが ${req.url} に対して送信されました`);
next();
});
このミドルウェアは、すべてのリクエストに対してHTTPメソッドとURLをログに出力します。next()
は、次のミドルウェアまたはルートハンドラへ処理を進めるために呼び出します。
6. まとめ
Expressフレームワークを使用すると、HTTPリクエストに対応するルートを簡単に定義できます。主要なHTTPメソッド(GET, POST, PUT, DELETE)を使い分け、ルートパラメータやクエリパラメータを活用することで、動的なウェブアプリケーションを構築できます。また、ミドルウェアを使ってリクエスト処理を拡張し、より複雑な機能を実現することができます。
Expressの柔軟性と簡潔さを活かして、シンプルかつ効果的なウェブアプリケーションを作成しましょう。