【Express チュートリアル】リクエストパスを取得して、動的なWebページを作成しよう!
Express でリクエストパスを取得する方法
req.originalUrl プロパティを使う
req.originalUrl
プロパティには、元のリクエスト URL が格納されています。これは、リダイレクトやプロキシを経由したリクエストの場合でも、元の URL を取得することができます。
app.get('/', (req, res) => {
const path = req.originalUrl;
console.log(`リクエストパス: ${path}`);
res.send('Hello from Express!');
});
この例では、/
パスへの GET リクエストがあった場合、req.originalUrl
プロパティには /
が格納されます。
app.get('/', (req, res) => {
const path = req.url;
console.log(`リクエストパス: ${path}`);
res.send('Hello from Express!');
});
一般的には、req.originalUrl
プロパティを使うことをお勧めします。これは、常に元の URL を取得することができ、開発者にとって分かりやすいからです。
ただし、リダイレクトやプロキシを経由しないシンプルなリクエストの場合は、req.url
プロパティの方がパフォーマンスが優れている場合があります。
補足
- リクエストパスには、クエリパラメータが含まれていないことに注意してください。クエリパラメータを取得するには、
req.query
オブジェクトを使用する必要があります。 - パスパラメータを取得するには、
req.params
オブジェクトを使用する必要があります。
注意事項
- 上記のコードはあくまで例であり、状況に応じて適宜変更する必要があります。
- 最新の情報については、Express の公式ドキュメントを参照してください。
const express = require('express');
const app = express();
// GET リクエストを処理するルートハンドラ
app.get('/', (req, res) => {
// リクエストパスを取得
const originalPath = req.originalUrl;
const currentPath = req.url;
// 取得したパスをコンソールに出力
console.log(`元のパス: ${originalPath}`);
console.log(`現在のパス: ${currentPath}`);
// レスポンスを返却
res.send('Hello from Express!');
});
// サーバーを起動
app.listen(3000, () => {
console.log('サーバーを起動しました。ポート: 3000');
});
このコードを実行すると、以下のようになります。
サーバーを起動しました。ポート: 3000
ブラウザで http://localhost:3000/
にアクセスすると、以下のコンソール出力とレスポンスが表示されます。
元のパス: /
現在のパス: /
Hello from Express!
この例では、req.originalUrl
プロパティと req.url
プロパティを使用してリクエストパスを取得しています。また、取得したパスをコンソールに出力し、レスポンスを返却しています。
補足
- このコードは、Node.js と Express がインストールされていることを前提としています。
- サーバーを起動するポート番号は、3000 以外にも変更できます。
Express でリクエストパスを取得するその他の方法
req.params
プロパティは、ルートパラメータ と呼ばれる、URL パスの特定の部分に値を割り当てるために使用されます。ルートパラメータは、コロン (:
) で囲まれた変数名として定義されます。
app.get('/:id', (req, res) => {
const id = req.params.id;
console.log(`ID: ${id}`);
res.send(`ID: ${id}`);
});
この例では、/users/123
や /products/abc
などのリクエストがあった場合、req.params.id
には 123
や abc
などの値が格納されます。
req.query
プロパティは、クエリパラメータ と呼ばれる、URL の ?
の後に続くクエリ文字列に含まれるキーと値のペアを取得するために使用されます。
app.get('/', (req, res) => {
const name = req.query.name;
const email = req.query.email;
console.log(`名前: ${name}`);
console.log(`メールアドレス: ${email}`);
res.send('Hello from Express!');
});
この例では、/users?name=Taro&[email protected]
などのリクエストがあった場合、req.query.name
には Taro
、req.query.email
には [email protected]
などの値が格納されます。
それぞれの方法の使い分け
- req.originalUrl プロパティ: リダイレクトやプロキシを経由したリクエストを含む、元のリクエストパスを取得する必要がある場合に使用します。
- req.params プロパティ: ルートパラメータと呼ばれる、URL パスの特定の部分に値を割り当てた場合に使用します。
Express でリクエストパスを取得するには、さまざまな方法があります。それぞれの方法の特徴を理解し、状況に応じて適切な方法を選択することが重要です。
javascript node.js express