の中にNodeJSexpress
モジュールのドキュメント、サンプルコードには がありますapp.use(...)
。
その関数とは何ですかuse
、どこで定義されていますか?
ベストアンサー1
アプリオブジェクトはExpressサーバーの作成時にインスタンス化されます。カスタマイズ可能なミドルウェアスタックを備えています。app.configure()
(バージョン 4.x では非推奨になりました)。
ミドルウェアを設定するには、app.use(<specific_middleware_layer_here>)
追加したいミドルウェア層ごとに(すべてのパスに汎用的にすることも、サーバーが処理する特定のパスのみにトリガーすることもできます)、急行ミドルウェアスタック。ミドルウェアレイヤーは、 を複数回呼び出して 1 つずつ追加することuse
も、1 回の呼び出しで一度にすべて追加することもできます。use
ドキュメンテーション詳細については。
Express ミドルウェアの概念を理解するための例として、アプリ オブジェクトを JSON としてコンソールに記録するときのアプリ ミドルウェア スタック (app.stack) は次のようになります。
stack:
[ { route: '', handle: [Function] },
{ route: '', handle: [Function: static] },
{ route: '', handle: [Function: bodyParser] },
{ route: '', handle: [Function: cookieParser] },
{ route: '', handle: [Function: session] },
{ route: '', handle: [Function: methodOverride] },
{ route: '', handle: [Function] },
{ route: '', handle: [Function] } ]
ご想像のとおり、私はapp.use(express.bodyParser())
、、app.use(express.cookieParser())
などを呼び出して、これらの Express ミドルウェア「レイヤー」をミドルウェア スタックに追加しました。ルートが空白になっていることに注意してください。これは、これらのミドルウェア レイヤーを追加したときに、どのルートでもトリガーされるように指定したことを意味します。パスでのみトリガーされるカスタム ミドルウェア レイヤーを追加した場合、上記のスタック出力のそのミドルウェア レイヤー オブジェクトの/user/:id
フィールドに文字列として反映されますroute
。
各レイヤーは基本的に、ミドルウェアを介したフローに何かを具体的に処理する機能を追加します。
たとえば、 を追加することでbodyParser
、サーバーが Express ミドルウェア を介して着信リクエストを処理することを保証できます。つまり、を呼び出したことにより、着信リクエストの本文を解析することが、着信リクエストを処理するときにミドルウェアが実行する手順の一部になりますapp.use(bodyParser)
。