[英]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.