Node.js + Express において URLルーティング 、特に名前付きパラメーターをどのように指定するかまとめました。
基本
基本のルーティング指定方法は以下の通りです。
構文
1 | app.METHOD(PATH, CALLBACK); |
- METHOD
- HTTPリクエストメソッドを小文字で指定します。例:
get
,post
,put
,delete
- PATH
- URLルーティングを指定します。
- CALLBACK
- URLルーティングが一致したときに実行する処理を指定します。
たとえば、ルートパス /
へのルーティングを指定する場合、以下のように指定します。
1 2 3 4 | 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 の フォロー」 お願いします!!