Modular Routing
こんなシナリオを想像してみてください。 あなたはペットを販売するお店を経営していて、お客さんがあなたからウサギやネコを買いたいと思っています。
上で定義した基本的なルーティング メソッドを使用すると、コードは次のようになります:
同じルートを複数回記述していることに注意してください。
しかし、ルートを何度も記述すると、冗長性やタイプミスが増えます。 さらに、私たちのコードをよりモジュール化することは、良い習慣として役立ちます。
プログラマーとして、コードをよりきれいに見せたいと常に思っています。 上のコードを読みやすくするために、2つの方法を使うことができます。
app.routeを使う
ここで、app.route
の出番です。 パスの記述は一度で済みますし、複数のルートハンドラをチェーンすることもできます。
app.route
を実装するには以下のようにします。
コードがすっきりして、各HTTPリクエストのルートを一度だけ入力しなければならなくなりました。
しかし、もうひとつ注意点があります。username
username
を何度も入力することは、タイプミスや冗長性を助長します。
express.Router()
express.Router()
Router
インスタンスは、完全なミドルウェアとルーティング システムであるため、しばしば「ミニ アプリ」と呼ばれます。
app.Router()
app.Router
module.exports
を使用してインスタンスをエクスポートする必要があります。
module.exports
の使用に関する詳細は、以前の記事を参照してください。
この例では、username
id
のパラメーターを含むような、単純なパスを処理するだけにします。
routerExample.js
では:
router.route()
app.route
/:username/:id
で終わる限り、定義された通りに以下のコードを実行してください」とあります。”
これを使うには、別のモジュールであるmain.js
を使います。
コメントにあるように、app.use
routeExample.js
に、第1パラメータで始まるルートを持つ関数を実行するように指示します。 最初のパラメータは出発点と言えます。
例えば、6行目によると、‘/cats’
で始まるGETとPOSTのリクエストを処理するようになります。
いつものように、routeExample
app.use
での開始点だけです。
コードを実行するには、ターミナル ウィンドウで node main
cURL
を使用します。
ミドルウェアを使用したexpress.Routerでの異なるルート
この例では、ペットショップのBirdsホームページに移動し、それぞれのパスがリクエストされた時間を出力するミドルウェア関数、timeLog
を定義します。
birds.js
:
ではmain.js
となっています。
var birds = require('./birds')
app.use('/birds', birds) //handle /birds and /birds/about
コードを実行するためにnode
cURL
を使用します。
このように。 express.Router
では、ミドルウェアの機能を特定のパスでのみ実行することができます。