Python中有一个我很喜欢的库,叫做“Requests”。Requests是一个基于urllib 3.“requests doc“的HTTP客户端。
我正在寻找类似的东西在Ruby。基本上我需要的是:
- 上传文件支持(多部分/表单数据)。
- 容易得到/邮寄。
- Cookie可以从响应对象传递到请求对象(手动构建登录脚本)。
- 稳定且灵活。
- 会话支持(如果我们没有的话,也不必手动处理cookie)。
我看过Typheus,但是主页中的代码示例不起作用;他们已经移动了代码,get
方法不再是那样直接访问的,所以它开始的时候不太好。Curb看起来不错,我喜欢cURL,还有rest-client,它看起来很流行,em-http看起来很快,根据基准测试。还有Patron和curb-fu,我还没有时间去尝试。当然,还有Net:HTTP。但是,它似乎没有一个大家都指向的主流解决方案。
我想很多人都有我的处境,我想知道他们选择了什么,为什么?
8条答案
按热度按时间qyyhg6bp1#
比较的作者是
httpclient
的作者,但从表面上看,比较是公平的。对于更多的叙述风格和一些矩阵的解释,请参阅同一作者的http://www.slideshare.net/HiroshiNakamura/rubyhttp-clients-comparison。
比较结果部分支持httpclient,我也可以推荐它。简单,功能丰富,兼容所有Ruby平台,性能好。比其他任何东西都更好的cookie支持,但是演示文稿提到,如果使用相同的客户端对象,cookie可能会从一个(恶意)站点泄漏到另一个站点。不知道这是否仍然正确。
bttbmeg02#
有https://github.com/cyx/requests,这正是这个问题所要求的,它是python的requests lib的一个端口。
lf3rwulv3#
内置的OpenURI是第一个要看的地方。它很简单,很好地处理了基本问题。
Typheus,我已经在并行处理中使用过几次了,工作得很好。
我偶尔也会使用Net::HTTP,但是OpenURI和Typheus以及Hydra已经证明很容易使用,并且可以与我的代码集成。
lqfhib0f4#
我最终找到了这个HTTPClient:https://github.com/nahi/httpclient
我已经开始使用它了,它符合我想要的功能,而且根据一些基准测试,它的速度非常快。它还支持一些高级功能,如流媒体或分块响应。虽然它在Ruby社区中并不出名,但这很遗憾。:)
relj7zay5#
你看过HTTParty宝石了吗?
9rygscc16#
如果您需要cookie和表单处理,mechanize是唯一的选择。
2vuwiymt7#
很遗憾,Typhoeus不适合您。原因是,自述文件显示了如何使用Typhoeus v0.5.0.rc,该版本可以通过
或
。没有对Typhoeus的会话支持,但除此之外,它可能是一个很好的选择。至少它非常稳定,因为它是在libcurl之上构建的。
文件发送示例:
遗憾的是,没有处理Cookie的捷径,您必须手动设置它们:
TLDR:如果您愿意自己设置,我会选择Typheus,因为它的速度和libcurl。否则,我会研究Faraday,并将其与Typheus适配器一起使用。
编辑:我在README中添加了安装说明。
编辑:发布0.5。
6ovsh4lw8#
这个问题似乎缺乏最近的答案。我也在填补空白。
我自己来自python,并且喜欢requests库,因为它可以轻松地完成任务,最近我在rest_client中发现了一个非常好的Ruby等价物
它支持问题中提到的所有特性,并且从可用性的Angular 看似乎非常好--这是库所要实现的要求。