2017-12-12 8 views
1

Expressアプリケーションで404と405の両方のステータスコードを処理する方法を見つけようとしていますが、それらを別々に処理しています。NodeJSエクスプレス処理404(見つからない)と405(メソッド非使用)を区別して

例えば:私は、次のようにルータを有する:

// Add routes for every path we define here. 
server.use('/', require('./indexRoutes')) 
server.use('/account', require('./accountRoutes')) 

// Handling route errors. 
server.all('*', (request, response) => 
    response.status(404).send('Invalid route (not found).') 
) 

しかし、無効なルートまたは無効なHTTP動詞のいずれかがserver.all方法によって治療されています。異なる状況、コンテンツ、および各シナリオのすべてを送信するために、それらを個別に扱う方法はありますか?

ありがとうございました!

答えて

3

私の頭に浮かぶ最初のことは、すべての有用なパスを宣言した後に、応答する405のエラーを宣言することです。あなたのaccountRoutesで例えば 、:あなたは/アカウントのパスにGETまたはPOSTを受け取った場合

server.get('/account', ....); 
server.post('/account', ...); 
server.all('/account', (req, res, next) => { 
    res.status(405).send('Method not allowed'); 
}); 

それはあなたの方法で処理されます。他の方法は405コードで応答されます。

パスが実装されていないと、デフォルトで404コードが送信されますが、実装する必要はありません。