2017-05-11 59 views
2

我需要構建一個restify中間件,該中間件對處理程序生成的響應正文進行操作。看來,我傳遞給server.use的任何東西在之前被稱爲處理程序。如何創建修改response.body的Restify中間件?

我試過打電話next(),然後檢查res對象,但沒有成功。

此外,這answer可能是我所尋找的,但我並不真的需要use路由器,也不知道如何去做。

回答

3

您可以使用格式化程序。

我不認爲使用中間件將工作。一旦發現適當的路由處理程序(.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. 
    } 
    } 
}); 
+0

有沒有一種方法可以在自定義格式中調用默認格式化程序? –

+0

我不這麼認爲。文檔中提供的示例格式化程序是默認格式化程序,因此您可以將自定義邏輯附加到該格式化程序。 – carchase

相關問題