2016-08-10 5 views
1

私はExpressに基づいてREST APIを構築しています。ユーザーに間違ったHTTP動詞を使用したときに警告する必要があります。Express、複数のルートで聴く

現在、私はそれぞれのルートの後

app.all('/', (req, res) => { 
    answer(req, res, {code: 400, error: 'Wrong method'}); 
}); 

を追加していて、非無視できることを始めて、私はむしろ一つの場所でそれを持っている、と私はこれを聞きたいすべてのルートをリストdは。

ような何かする方法があります:私は唯一の失敗の一点を持っているように、代わりにすべてのルートをチェックするので、

app.all(['/', '/signup', '/login'], (req, res) => { 
    answer(req, res, {code: 400, error: 'Wrong method'}); 
}); 

は?

答えて

1

Expressは、ルートパスの照合にpath-to-regexpを使用します。ルートパスを定義する際のすべての可能性については、path-to-regexpのドキュメントを参照してください。 Express Route Testerは、基本的なExpressルートをテストするための便利なツールですが、パターンマッチングはサポートしていません。

/^(signup|login)\/(.+)/を使用できます。 `パスツーregex`ドキュメントを見ながら、私は、彼らは文字列の配列について話見た

app.all(['/^(signup|login)\/(.+)/'], (req, res) => { 
    answer(req, res, {code: 400, error: 'Wrong method'}); 
}); 
+0

、テストするとき、それは私が仕事ではないだろうと思ったのコードを表示されます:あなたのケースではDOCS

を参照してください。 'app.all(['/'、 '/ signup'、 '/ login']、(req、res){});' – DrakaSAN

1

あなたはURLパスと方法であなたの小切手で関数を定義し、これを処理するためにアプリにお渡しミドルウェアでそれを使用することができますエラー状況。

ルートの前に定義するだけです。ここ

例:ここ

app.use(function(req, res, next){ 
    if (checkIfIsWrongMethod(req)) { 
     answer(req, res, {code: 400, error: 'Wrong method'}); 
    } else { 
     next(); 
    } 
}); 

はexpressjs FAQあります。

関連する問題