2017-06-30 8 views
1

ためbodyparserミドルウェアを削除Sails.js:特定のルート

[ 
     'startRequestTimer', 
     'cookieParser', 
     'session', 
     'bodyParser', 
     'passportInit', 
     'passportSession', 
     'myRequestLogger', 
     'handleBodyParserError', 
     'compress', 
     'methodOverride', 
     'poweredBy', 
     'router', 
     'www', 
     'favicon', 
     '404', 
     '500' 
    ] 

は私が削除したい

は現在、すべてのミドルウェアがhttp.jsファイルにリストされている特定のルートのためのミドルウェアを削除する方法はありbodyParser特定のルートのミドルウェア

sails.jsで可能ですか?

答えて

2

これを宣言的に行うメカニズムはありませんが、ルートごとにミドルウェアを無効にすることができます。ミドルウェアをオーバーライドし、カスタムコード内のルートURLを確認することで、これを実行します。using a separate body parser for XML requestsのソリューションと同様です。例:

// In config/http.js `middleware` property 

bodyParser: (function() { 
    // Initialize a skipper instance with the default options. 
    var skipper = require('skipper')(); 
    // Create and return the middleware function. 
    return function(req, res, next) { 
    // If we see the route we want skipped, just continue. 
    if (req.url === '/dont-parse-me') { 
     return next(); 
    } 
    // Otherwise use Skipper to parse the body. 
    return skipper(req, res, next); 
    }; 
})() 

これは基本的な考えです。確かにもう少しエレガントにできます。たとえば、スキップしたい複数のルートがある場合は、リストを別のファイルに保存し、そのリストに対して現在のURLをチェックすることができます。

+0

したがって、bodyParserミドルウェアを配列 – Jabaa

+0

の配列で呼び出す必要があります。デフォルトでは既にそこにあります。カスタマイズされた 'order'配列がある場合は、この解決法が機能するために' bodyParser'がそこにあることを確認する必要があります。 – sgress454

+0

ここで私はデフォルトのbodyParserミドルウェアをオーバーライドしていますか? – Jabaa

関連する問題