Expressjs-url-building

提供:Dev Guides
移動先:案内検索

ExpressJS-URL構築

ルートを定義できるようになりましたが、それらは静的または固定です。 動的ルートを使用するには、さまざまなタイプのルートを提供する必要があります。 動的ルートを使用すると、パラメーターを渡し、それらに基づいて処理することができます。

これは、動的ルートの例です-

var express = require('express');
var app = express();

app.get('/:id', function(req, res){
   res.send('The id you specified is ' + req.params.id);
});
app.listen(3000);

これをテストするには、 http://localhost:3000/123 に移動します。 次の応答が表示されます。

URLビルディング1

URLの「123」を他のものに置き換えると、変更が応答に反映されます。 上記のより複雑な例は-

var express = require('express');
var app = express();

app.get('/things/:name/:id', function(req, res) {
   res.send('id: ' + req.params.id + ' and name: ' + req.params.name);
});
app.listen(3000);

上記のコードをテストするには、 http://localhost:3000/things/finddevguides/12345 にアクセスします。

URLビル2

*_req.params_* オブジェクトを使用して、URLで渡すすべてのパラメーターにアクセスできます。 上記の2つは異なるパスであることに注意してください。 重複することはありません。 また、 *'/things'* を取得したときにコードを実行する場合は、コードを個別に定義する必要があります。

パターン一致ルート

*regex* を使用して、URLパラメーターの一致を制限することもできます。 *id* が5桁の長い数字である必要があると仮定しましょう。 次のルート定義を使用できます-
var express = require('express');
var app = express();

app.get('/things/:id([0-9]{5})', function(req, res){
   res.send('id: ' + req.params.id);
});

app.listen(3000);

これは、5桁の長さの id を持つ要求にのみ*一致*することに注意してください。 より複雑な正規表現を使用して、ルートを照合/検証できます。 どのルートもリクエストに一致しない場合、応答として _ "<not-request-route>" _ メッセージを取得できません。 このメッセージは、この単純なルートを使用して、404の見つからないページに置き換えられます-

var express = require('express');
var app = express();

//Other routes here
app.get('*', function(req, res){
   res.send('Sorry, this is an invalid URL.');
});
app.listen(3000);

重要-Expressは、必要な外部ルーターを含む index.js ファイルの最初から最後までのルートと一致するため、すべてのルートの後に配置する必要があります。

たとえば、上記と同じルートを定義した場合、有効なURLでリクエストすると、次の出力が表示されます。 −

正しい正規表現

誤ったURLリクエストの場合、次の出力が表示されます。

無効な正規表現(404)