2015-12-06 7 views
15

私のAPIアプリケーションでは、さまざまな部分のエラーに対する固定応答があります。あなたが見ることができるように、res.status(400).json({"error": "Invalid input"})は実際には異なるファイルやモジュールでたくさん繰り返されています。Node.JSのレスポンスオブジェクトにカスタム関数を追加する方法

モジュール機能invalidInput(res)を作成すると重複はなくなりますが、これはres.invalidInput()のようなresオブジェクトのグローバル部分になりたいのです。

JS/Node.JSでどうすればいいですか?

router.get("/users", function(req, res) { 
    // ... 
    if (error) { 
     return res.status(400).json({"error": "Invalid input"}); 
    } 
}); 

router.get("/items", function(req, res) { 
    // ... 
    if (error) { 
     return res.status(400).json({"error": "Invalid input"}); 
    } 
}); 

// etc 

答えて

14

独自のカスタムミドルウェアを使用できます。あなたのルートハンドラ上記の本のどこかに追加します。

router.use(function(req, res, next) { 
    res.invalidInput = function() { 
     return res.status(400).json({"error": "Invalid input"}); 
    }; 
    next(); 
}); 

をしてから、あなたのルートハンドラでres.invalidInput()を行うことができます。