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

Javascript NodeJS请求模块-http.IncomingMessage上的正文?,javascript,node.js,node-request,Javascript,Node.js,Node Request,我正在查看节点的模块,文档显示回调函数接受三个参数-error,response(http.IncomingMessage)和body 在发出请求时,我发现该主体也可以作为响应对象的属性使用。 这可靠吗?我是否可以省略回调中的最后一个参数,而改用response.body 响应。body并不总是与body参数相同。如果请求对响应进行任何处理(如解压缩),则body参数将是该处理的结果,但response.body可能不会反映该处理。您应该使用response参数。以下是文档中的一个示例: 为了向

我正在查看节点的模块,文档显示回调函数接受三个参数-
error
response
http.IncomingMessage
)和
body

在发出请求时,我发现该主体也可以作为
响应
对象的属性使用。

这可靠吗?我是否可以省略回调中的最后一个参数,而改用
response.body

响应。body
并不总是与
body
参数相同。如果请求对响应进行任何处理(如解压缩),则
body
参数将是该处理的结果,但
response.body
可能不会反映该处理。您应该使用
response
参数。以下是文档中的一个示例:

为了向后兼容,不支持响应压缩 违约要接受gzip压缩响应,请将gzip选项设置为 对。请注意,通过请求传递的正文数据是自动传递的 在响应对象未修改且将包含 如果服务器发送了压缩响应,则为压缩数据


是的,
body
只是方便
响应。body
因此保证它们始终相同

您可以通过检查来验证这一点

在同一个文件中的其他地方处理
complete
事件

self.on('error', self.callback.bind())
self.on('complete', self.callback.bind(self, null))

这仅适用于传递给回调的
响应。传递给响应事件的
response
对象是标准的
http.IncomingMessage
,因此没有
body
属性。

是的,为什么不试试看会发生什么?我只是好奇为什么文档没有提供这些信息。他们能保证我收到各种请求的机构吗?或者,如果这只是一个巧合?很公平,这真的只是一个方便的方法,所以我们不必做response.body,request将为每个有body要返回的请求返回一个body…body也可能是一个错误,response只是一个从api返回的对象,request使这一过程变得简单
self.on('error', self.callback.bind())
self.on('complete', self.callback.bind(self, null))