2017-05-11 10 views
2

ハンドラが生成したレスポンスの本体で動作するrestifyミドルウェアを構築する必要があります。私がserver.useに渡したものは、の前に、ハンドラのと呼ばれています。レスポンスを変更するRestifyミドルウェアを作成するには?

next()を呼び出して、resオブジェクトをチェックしましたが、失敗しました。

また、このanswerが私の求めるものかもしれませんが、ルータをuseにする必要はありません。

答えて

3

フォーマッタを使用できます。

私はミドルウェアを使用するとうまくいかないと思います。 Restifyはミドルウェアが適切なルートハンドラを見つけたらそれを無視します(.get .put。postなど)。代わりにフォーマッタを使用することができます。 http://restify.com/#content-negotiation

復元サーバーを作成するときに、フォーマッターを指定できます。これらは、ルートハンドラがres.send()を呼び出した後に呼び出されます。これにより、ボディを操作することができます。

var server = restify.createServer({ 
    formatters: { 
    'application/foo': function formatFoo(req, res, body, cb) { 
     // body is what was sent with the response, you can edit it here. 
     // You finish processing by calling cb(null, body). 
     // Just be sure that you body is properly stringified. 
     // See the restify docs above for more information. 
    } 
    } 
}); 
+0

カスタムフォーマッタからデフォルトフォーマッタを呼び出す方法はありますか? –

+0

私はそうは思わない。ドキュメントに用意されているサンプルフォーマッタはデフォルトのフォーマッタであるため、カスタムロジックを追加するだけで済みます。 – carchase

関連する問題