繁体   English   中英

NodeJS请求模块 - http.IncomingMessage上的正文?

[英]NodeJS request module - body on http.IncomingMessage?

我正在查看节点的请求模块,文档说回调接受三个参数 - errorresponsehttp.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM