2
我需要構建一個restify中間件,該中間件對處理程序生成的響應正文進行操作。看來,我傳遞給server.use
的任何東西在之前被稱爲處理程序。如何創建修改response.body的Restify中間件?
我試過打電話next()
,然後檢查res
對象,但沒有成功。
此外,這answer可能是我所尋找的,但我並不真的需要use
路由器,也不知道如何去做。
我需要構建一個restify中間件,該中間件對處理程序生成的響應正文進行操作。看來,我傳遞給server.use
的任何東西在之前被稱爲處理程序。如何創建修改response.body的Restify中間件?
我試過打電話next()
,然後檢查res
對象,但沒有成功。
此外,這answer可能是我所尋找的,但我並不真的需要use
路由器,也不知道如何去做。
您可以使用格式化程序。
我不認爲使用中間件將工作。一旦發現適當的路由處理程序(.get .put .post等),Restify忽略中間件。您可以改用格式化程序。 http://restify.com/#content-negotiation
當您製作restify服務器時,您可以指定格式化程序。這些在路由處理程序調用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.
}
}
});
有沒有一種方法可以在自定義格式中調用默認格式化程序? –
我不這麼認爲。文檔中提供的示例格式化程序是默認格式化程序,因此您可以將自定義邏輯附加到該格式化程序。 – carchase