Node.js + Express において URLルーティング 、特に名前付きパラメーターをどのように指定するかまとめました。
基本
基本のルーティング指定方法は以下の通りです。
構文
app.METHOD(PATH, CALLBACK);
- METHOD
- HTTPリクエストメソッドを小文字で指定します。例:
get,post,put,delete - PATH
- URLルーティングを指定します。
- CALLBACK
- URLルーティングが一致したときに実行する処理を指定します。
たとえば、ルートパス / へのルーティングを指定する場合、以下のように指定します。
app.get("/", function (request, response) {
// GET: /
response.send("Hello World");
});
応用
「応用」では上記「基本」の設定における PATH の指定方法をもう少し掘り下げます。
PATH は特殊な記法を用いることで柔軟な URLルーティング を実現できるようになっています。
以下に具体的な方法を見ていきます。
名前付き パラメーター
コロン ( : ) のプレフィックスで始まる文字列はパラメータとして認識されます。
パラメータ文字列は次のパスセグメントまでをパラメータ文字列として認識します。
パラメータ文字列として利用可能な文字列はアルファベット大文字小文字、数字、アンダースコア [A-Za-z0-9_] になります。
名前付きパラメーターは request.params.PARAMETER_NAME で値を取り出すことができます。
| ルート定義 | リクエスト例 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /api/user/:id |
|
オプション
サフィックスに クエスチョンマーク ? を付けることで、パラメーターがオプションでることを指定できます。
| ルート定義 | リクエスト例 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /api/user/:id? |
|
0 以上
サフィックスに アスタリスク * を付けることで、0 以上のパラメーターと一致させることができます。
| ルート定義 | リクエスト例 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /api/user/:id* |
|
1 以上
サフィックスに プラス + を付けることで、1 以上のパラメーターと一致させることができるハズ…ですが、
実際試してみると動作的にはサフィックスにプラス + があってもなくても通常の動作と変わらない動作でした。
| ルート定義 | リクエスト例 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /api/user/:id+ |
|
カスタムマッチ パラメーター
名前付きパラメーターに対して正規表現で条件指定することができます。 以下の例では数値だけを受け付けるカスタムマッチパラメーターを設定しています。
| ルート定義 | リクエスト例 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /api/user/:id(\\d+) |
|
名前なし パラメーター
グループマッチさせる正規表現は名前なしパラメーターとして指定できます。
グループマッチ (.*) の指定は アスタリスク * の省略表記も使えます。
無名なため rquest.params で値を取り出すことはできません。
| ルート定義 | リクエスト例 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /api/user/(\\d+) |
|
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!