私はnode.jsとexpressが初めてで、しばらくの間それらを試してきました。現在、リクエストボディの解析に関連する高速フレームワークの設計に混乱しています。エクスプレスの公式ガイドから:
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);
すべてのミドルウェアをセットアップしたら、処理するルートを追加します。
app.post('/test', function(req, res){
//do something with req.body
});
このアプローチの問題は、ルートの有効性がチェックされる前に、すべてのリクエスト本文が最初に解析されることです。無効なリクエストの本文を解析するのは非常に効率が悪いようです。さらに、アップロード処理を有効にすると:
app.use(express.bodyParser({uploadDir: '/temp_dir'}));
どのクライアントも、ファイルをアップロードすることで (任意のルート/パスにリクエストを送信することで) サーバーを攻撃できます。これらはすべて処理され、「/temp_dir」に保持されます。このデフォルトの方法が広く宣伝されているとは信じられません!
もちろん、ルートを定義するときに bodyParser 関数を使用できます。
app.post('/test1', bodyParser, routeHandler1);
app.post('/test2', bodyParser, routeHandler2);
または、ルートを処理する各関数で本体を解析することさえできます。ただし、これを行うのは面倒です。
すべての有効な (定義された) ルートに対してのみ express.bodyParser を使用し、選択したルートに対してのみファイル アップロード処理機能を使用し、多くのコードを繰り返さずに使用するより良い方法はありますか?