Python请求库(HTTP客户端)的Ruby等价物

Har*_*tor 19 ruby http

我喜欢Python中的一个名为"请求"的库.请求是在urllib3上构建的HTTP客户端." 请求doc ".

我在Ruby中寻找类似的东西.基本上我需要的是:

  • 上传文件支持(multipart/form-data).
  • 轻松上/下.
  • Cookie可以从响应对象传递到请求对象(构建手动登录脚本).
  • 稳定而灵活.
  • 会话支持(如果我们没有,则不必手动处理cookie).

我看过Typhoeus,但主页中的代码示例不起作用; 他们已经移动了代码并且get方法不再像这样直接访问,因此它不能很好地启动.Curb似乎很好,我喜欢cURL,还有rest-client,这看起来很受欢迎,而em-http根据基准测试似乎相当快.还有一个Patron和curb-fu,我没有时间去尝试.当然还有Net:HTTP.但是,似乎并没有每个人都指出的主流解决方案.

我想很多人都在我的情况下,我想知道他们选择了什么,为什么?

cla*_*cke 10

这是一个功能矩阵,其中包含一系列适用于Ruby的HTTP客户端.

https://bit.ly/RubyHTTPClients

比较的作者是作者httpclient,但从它的外观来看,比较是公平的.

有关矩阵的更多叙述风格,请参阅同一作者的http://www.slideshare.net/HiroshiNakamura/rubyhttp-clients-comparison.

比较结果部分支持httpclient,我也可以推荐.简单,功能强大,兼容所有Ruby平台和高性能.比其他任何东西都更好的cookie支持,但是演示文稿提到如果你使用相同的客户端对象,cookie可能会从一个(恶意)站点泄漏到另一个(恶意)站点.不知道这是否仍然是真的.


the*_*Man 6

The built-in OpenURI is the first place to look. It's simple and handles the basics nicely.

Typhoeus,我多次用于并行处理,效果很好.文档代码库可在Github上获得.

irb(main):009:0> response = Typhoeus::Request.get("www.example.com")
=> #<Typhoeus::Response:0x007ffbcc067cf8 @code=302, @curl_return_code=0, @curl_error_message="No error", @status_message=nil, @http_version=nil, @headers="HTTP/1.0 302 Found\r\nLocation: http://www.iana.org/domains/example/\r\nServer: BigIP\r\nConnection: close\r\nContent-Length: 0\r\n\r\n", @body="", @time=0.035584, @requested_url=nil, @requested_http_method=nil, @start_time=nil, @start_transfer_time=0.035529, @app_connect_time=2.8e-05, @pretransfer_time=0.000429, @connect_time=2.8e-05, @name_lookup_time=2.8e-05, @request=:method => :get,
    :url => www.example.com, @effective_url="HTTP://www.example.com", @primary_ip="192.0.43.10", @redirect_count=0, @mock=false>
irb(main):010:0> puts response.headers
HTTP/1.0 302 Found
Location: http://www.iana.org/domains/example/
Server: BigIP
Connection: close
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

我偶尔也会使用Net :: HTTP,但是使用Hydra的OpenURI和Typhoeus已被证明易于使用并与我的代码集成.


f-3*_*-3r 6

https://github.com/cyx/requests,这正是问题所要求的,来自python的请求lib的端口.


Har*_*tor 4

我最终找到了这个 HTTPClient : https: //github.com/nahi/httpclient

我已经开始使用它,它符合我想要的功能,而且根据一些基准测试,它的速度相当快。它还支持一些高级功能,例如流式响应或分块响应。尽管它在 Ruby 社区中并不出名,但还是很遗憾。:)