[英]NodeJS request module - body on http.IncomingMessage?
我正在查看節點的請求模塊,文檔說回調接受三個參數 - error
, response
( http.IncomingMessage
)和body
。
在發出請求時,我發現該主體也可用作response
對象的屬性。
這可靠嗎? 我可以在回調中省略最后一個參數並使用response.body
嗎?
response.body
並不總是與body
參數相同。 如果對響應請求任何處理(例如解壓縮),則body
參數將是該處理的結果,但response.body
可能不會反映該處理。 您應該使用response
參數。 以下是文檔中的一個示例:
為了向后兼容,默認情況下不支持響應壓縮。 要接受gzip壓縮的響應,請將gzip選項設置為true。 請注意,通過請求傳遞的正文數據會在響應對象未修改時自動解壓縮,如果服務器發送壓縮響應,則會包含壓縮數據。
是的, body
只是一個方便的response.body
所以他們保證永遠是相同的。
您可以通過檢查源代碼來驗證這一點。
self.emit('complete', response, response.body)
在同一文件中的其他地方處理complete
事件
self.on('error', self.callback.bind())
self.on('complete', self.callback.bind(self, null))
這僅適用於傳遞給回調的response
。 傳遞給響應事件的response
對象是標准的http.IncomingMessage
,因此沒有body
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.