違いはありますか
app.use('/some/path', function(req, res, next() {})
と
app.all('/some/path', function(req, res, next() {})
どちらも /some/path リクエストに対してのみ呼び出されるミドルウェア関数ですよね?
違いはありますか
app.use('/some/path', function(req, res, next() {})
と
app.all('/some/path', function(req, res, next() {})
どちらも /some/path リクエストに対してのみ呼び出されるミドルウェア関数ですよね?
これら 2 つの例の使用には大きな違いがあります。登録されたapp.use
関数は、一般的なミドルウェア関数であり、通常は関数内のミドルウェア スタック上の位置に応じて呼び出されapp.configure
ます。このタイプのミドルウェアは通常、エラー処理関数を除いて の前に配置されます。 app.route
一方、すべての HTTP メソッドをカバーし、内部app.all
でのみ呼び出されるルーティング関数 (通常はミドルウェアとは呼ばれません)です。以前のルーター関数のいずれかが一致し 、コールバックを呼び出さなかった場合は実行されないため、関数は通常、ルーティング ブロックの先頭にあります。 app.route
/some/path
next
app.all
app.all
ルーティング機能で使用される 3 番目のタイプのミドルウェアもあります。
app.get('/some/path', middleware1, middleware2, function(req, res, next) {});
これは通常、アクセスを制限したり、/some/path
ルートに関連する一般的なタスクを実行したりするために使用されます。
実際のアプリケーションでは、両方の関数を使用できますが、 と使用する場合は動作の違いに注意しapp.use
て/some/path
ください。とは異なりapp.get
、app.use
無名/some/path
関数を呼び出す前にルートから削除します。
詳しくは、 expressのドキュメントを参照してください。