20

クライアントがマップされた URL ルートと一致するが、マップされた HTTP メソッドと一致しないリクエストを送信した場合、エクスプレス アプリが 405 Method Not Allowed を返すクリーンな方法を探しています。

私の現在の実装は、HTTP メソッドを無視して、登録ルートに対して URL を照合しようとするデフォルトの「キャッチオール」ハンドラーを持つことです。一致する場合は 405 を返す必要があり、それ以外の場合は Express にデフォルトの 404 動作をさせます。

すべてのルート マッチングを 2 回 (エクスプレスで 1 回、ハンドラーで 1 回) 実行する必要のない、より良い方法があることを願っています。

4

6 に答える 6

2

あいまいさのため、他に方法はありません。個人的に、私はこのようなことをします:

var route = '/page/:id/comments'
app.get(route, getComments)
app.all(route, send405)

function send405(req, res, next) {
  var err = new Error()
  err.status = 405
  next(err)
}

いずれにせよ、ルートを2回確認する必要があります。

于 2013-02-14T21:29:07.463 に答える