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))