1

私は、restify 2.5.0 を使用した nodejs 0.10.7 アプリケーションを持っています。私のアプリケーションは、ファイルをアップロードする単純な USER crud です。ファイルの受信をより適切に制御するために、writestream を介してファイルをアップロードできるようにしたいので、そのアイデアの順序で、 APIが受信するデータがJSON上にある場合、ユーザーのcrud操作にjsonbodyパーサーを使用できるようにしたいのですが、ファイルを受信するときにjsonの本体を解析したくありません。ボディパーサーが行うことは、メモリ内のすべてを読み取り、私は「大きく」大量のファイルを取得しています。

ああ、クライアント リクエストからバイナリ データを取得しています。

サーバー設定から bodyparser を削除し、すべてのリクエストを手動で解析すると、CRUD 操作のために本文をどのように解析するかという疑問が生じます。

または、特定のルートまたは特定のコントローラーの下で jsonBodyParser を指定する方法を見つけることもできますが、その方法はわかりません。

それで、別のオプションがありますか、それとも私が持っているこれら2つのオプションはどちらが良いですか?それが最初のオプションである場合、どのようにreq.bodyを解析して、crud操作を簡単に行うことができますか?

私のアップローダ機能https://gist.github.com/maumercado/6f1f96d23bce888934db

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

4

1 に答える 1

5

したがって、この質問は、ルートが restify でどのように機能するかをまったく理解していなかったことを示しています。

ルートは関数の配列または単一の関数をパラメーターとして受け取るため、ルートのコントローラーの前に実行するメソッドとして restify.bodyParser() を設定しました。

このように:

// User Routes

server.get('/users', usersController.index);
server.post('/users', restify.bodyParser(), usersController.create);
server.get('/users', usersController.checkUsername);

// Upload Route

server.post('/upload', fileController.upload);

その設定により、すべてのサーバーで実行するのではなく、必要な場所で bodyparser を実行できます。

于 2013-06-13T19:01:53.313 に答える