19

私が大好きな「リクエスト」というライブラリがPythonにあります。Requestsは、urllib3上に構築されたHTTPクライアントです。「ドキュメントをリクエストします」。

Rubyで似たようなものを探しています。基本的に私が必要なのは:

  • アップロードファイルのサポート(multipart / form-data)。
  • 簡単な取得/投稿。
  • Cookieは、応答オブジェクトから要求オブジェクトに渡すことができます(手動でログインスクリプトを作成します)。
  • 安定して柔軟。
  • セッションはサポートします(Cookieがない場合は手動でCookieを処理する必要はありません)。

Typhoeusを見てきましたが、ホームページのコード例が機能しません。彼らはコードを移動し、getメソッドはそのように直接アクセスできなくなったため、うまく起動していません。Curbは素晴らしく、cURLが好きです。また、人気があるように見えるrest-clientもあり、ベンチマークによるとem-httpはかなり速いようです。パトロンや縁石もありますが、試してみる時間がありません。そしてもちろん、Net:HTTP。しかし、誰もが指摘する主流の解決策はないようです。

多くの人が私の状況にあったと思いますが、彼らが何を選んだのか、そしてその理由は何でしょうか。

4

8 に答える 8

11

これは、Ruby用のHTTPクライアントの選択を特徴とする機能マトリックスです。

https://bit.ly/RubyHTTPClients

比較の作者はの作者ですhttpclientが、見た目からは比較は公平です。

マトリックスの説明を含むより物語的なスタイルについては、同じ著者のhttp://www.slideshare.net/HiroshiNakamura/rubyhttp-clients-comparisonを参照してください。

比較は部分的にhttpclientを支持して出てきますが、これもお勧めできます。シンプルで機能的で、すべてのRubyプラットフォームおよびパフォーマンスと互換性があります。そこにある他の何よりも優れたCookieのサポートですが、プレゼンテーションでは、同じクライアントオブジェクトを使用すると、ある(悪意のある)サイトから別のサイトにCookieがリークする可能性があると述べています。これがまだ本当かどうかわからない。

于 2013-04-02T09:36:35.960 に答える
7

https://github.com/cyx/requestsがあります。これはまさに質問が求めているものであり、Pythonからのリクエストライブラリのポートです。

于 2015-02-10T17:10:26.587 に答える
6

組み込みのOpenURIが最初に表示されます。シンプルで基本をうまく処理します。

私が並列プロセスに数回使用した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

私も時々Net::HTTPを使用しますが、OpenURIとTyphoeusは、Hydraとともに、使いやすく、私のコードと統合できることが証明されています。

于 2012-10-30T05:51:02.347 に答える
4

HTTPartyの宝石を見たことがありますか?

于 2012-10-30T04:54:50.790 に答える
4

私は最終的にこのHTTPClientを見つけました: https ://github.com/nahi/httpclient

私はそれを使い始めました、それは私が欲しかった機能と一致します、そしてそれ以上にそれはいくつかのベンチマークによればかなり速いです。また、ストリーミングやチャンク応答などの高度な機能もサポートしています。ルビーのコミュニティでは有名ではありませんが、それは残念です。:)

于 2012-11-01T17:40:21.573 に答える
2

Cookieとフォームの処理が必要な場合は、機械化が唯一の方法です。

于 2012-10-30T04:57:44.463 に答える
2

Typhoeusがうまくいかなかったと聞いて申し訳ありません。その理由は、READMEに、でインストールできるTyphoeusv0.5.0.rcの操作方法が示されているためです。

gem install typhoeus --pre

また

gem "typhoeus", git: "git://github.com/typhoeus/typhoeus.git"

。Typhoeusのセッションサポートはありませんが、それ以外は適切である可能性があります。libcurlの上に構築されているので、少なくとも地獄のように安定しています。

ファイル送信の例:

Typhoeus.post("www.example.com/file", body: { file: File.open("testfile.txt","r") })

残念ながら、Cookieを処理するためのショートカットはありません。手動で設定する必要があります。

Typhoeus.get("www.example.com/needs_cookie", headers: { Cookie: "PRIVATE" })

TLDR:自分で設定する場合は、速度とlibcurlからTyphoeusを選択します。それ以外の場合は、ファラデーを調べて、Typhoeusアダプターで使用します。

編集: READMEにインストール手順を追加しました。

編集:0.5がリリースされました。

于 2012-10-30T13:35:11.803 に答える
1

この質問には最近の回答が不足しているようです。だから、空白を埋めています。

私自身がPythonから来て、それが簡単にできることについてのリクエストライブラリが大好きだったので、最近、rest_clientで非常に優れたRubyに相当するものを発見しました。

質問で言及されているすべての機能をサポートしており、ユーザビリティの観点からは非常に優れているようです。

于 2018-12-04T06:06:36.633 に答える