ExpressでURLパラメータを使う
Express で URL に複数のパラメータを渡す
Express は Node.js のウェブフレームワークで、URL に複数のパラメータを渡す機能を提供します。これにより、動的なコンテンツやルーティングを実現できます。
基本的な方法
- ルーティング定義
app.get()
などのメソッドを使用して、URL パターンを定義します。- URL パターンに
:
を使用してパラメータを指定します。
const express = require('express');
const app = express();
app.get('/users/:id/:name', (req, res) => {
const userId = req.params.id;
const userName = req.params.name;
// パラメータを使用して処理を行う
res.send(`User ID: ${userId}, Name: ${userName}`);
});
- パラメータの取得
複数のパラメータの扱い
req.params
オブジェクトから各パラメータの値を取得します。- 複数のパラメータを
/users/:id/:name
のように順に指定します。
オプションパラメータ
- オプションパラメータが指定されていない場合、
req.params.param
はundefined
になります。 - オプションパラメータを
/:param?
のように?
を付けて指定します。
app.get('/users/:id/:name?', (req, res) => {
const userId = req.params.id;
const userName = req.params.name || 'Unknown';
// ...
});
正規表現によるパターンマッチング
- 正規表現を使用して、より複雑なパターンマッチングを行うことができます。
app.get('/users/:id([0-9]+)', (req, res) => {
// id は数字のみ
// ...
});
基本的な例
const express = require('express');
const app = express();
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
res.send(`User ID: ${use rId}`);
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- レスポンス
res.send()
でレスポンスを返します。 - パラメータの取得
req.params.id
でパラメータの値を取得します。 - URL パターン
/users/:id
:id
はパラメータを表します。
app.get('/users/:id/:name', (req, res) => {
const userId = req.params.id;
const userName = req.params.name;
res.send(`User ID: ${userId}, Name: ${userName}`);
});
app.get('/users/:id/:name?', (req, res) => {
const userId = req.params.id;
const userName = req.params.name || 'Unknown';
res.send(`User ID: ${userId}, Name: ${userName}`);
});
app.get('/users/:id([0-9]+)', (req, res) => {
const userId = req.params.id;
res.send(`User ID: ${userId}`);
});
/:id([0-9]+)
はid
が数字のみであることを指定します。
クエリパラメータ
req.query
オブジェクトを使用して、クエリパラメータを取得します。- URL の末尾に
?
を付けて、キーと値のペアでパラメータを指定します。
app.get('/users', (req, res) => {
const userId = req.query.id;
const userName = req.query.name;
// ...
});
パスパラメータ
- URL のパス部分にパラメータを埋め込みます。
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// ...
});
ルーティングのネスト
- ルーティングをネストすることで、より複雑な URL パターンを定義できます。
app.get('/users/:id/posts/:postId', (req, res) => {
const userId = req.params.id;
const postId = req.params.postId;
// ...
});
ミドルウェア
- カスタムミドルウェアを作成して、URL パラメータの処理をカスタマイズできます。
const express = require('express');
const app = express();
function userIdMiddleware(req, res, next) {
const userId = req.params.id;
// パラメータの検証や処理を行う
next();
}
app.get('/users/:id', userIdMiddleware, (req, res) => {
// ...
});
ルーティングの動的生成
const express = require('express');
const app = express();
const users = ['user1', 'user2'];
users.forEach(user => {
app.get(`/users/${user}`, (req, res) => {
// ...
});
});
node.js express