限制rest-client读取的响应大小

时间:2013-10-03 23:33:31

标签: ruby rest-client

我使用Ruby gem rest-client(1.6.7)使用HTTP GET请求检索数据。但是,有时响应比我想要处理的要大,所以我希望有一些方法让RestClient一旦超过我设置的大小限制就停止读取。 documentation

  

对于通用API未涵盖的情况,您可以使用提供较低级别API的RestClient :: Request类。

但我不知道这对我有什么帮助。我没有看到任何看起来像处理传入数据流的钩子的东西,只有在读完整个东西后我才能执行的操作。我不想浪费时间和记忆来读取缓冲区中的巨大响应,只是为了丢弃它。

如何在RestClient请求中设置GET读取的数据量限制?或者是否有一个我可以使用的不同客户端可以轻松设置这样的限制?

1 个答案:

答案 0 :(得分:2)

rest-client在下面使用ruby的Net :: HTTP:https://github.com/rest-client/rest-client/blob/master/lib/restclient/request.rb#L303

不幸的是,看起来Net :: HTTP不会让你放弃基于其长度的响应,因为它使用了这个方法来发出所有请求: http://docs.ruby-lang.org/en/2.0.0/Net/HTTP.html#method-i-transport_request

如您所见,它使用HTTPResponse从服务器读取HTTP响应: http://ruby-doc.org/stdlib-2.0.0/libdoc/net/http/rdoc/Net/HTTPResponse.html#method-i-read_body

HTTPResponse似乎是您可以控制是否读取所有响应并将其存储到内存中,或者读取并丢弃的地方。 我甚至不想阅读回复,我想你需要关闭套接字。

我不知道是否有其他具有您需要的功能的客户端。我想如果你想拥有这样一个细粒度的控件,你需要编写自己的小客户端。