私のアプリケーションでは、当初はさまざまな API からデータを取得するために cURL を使い始めました。今日は、同じタスクを完了するために Guzzle を使ってみました。これまでのところ、cURL と Guzzle はどちらも同じようにうまく機能しているようです。
判断するとギットハブ多くの人が Guzzle を気に入っているようですが、その理由がよくわかりません。
私の質問:
私の状況 (さまざまな API からデータを取得する) では、Guzzle を使用する方が望ましいでしょうか? Guzzle の代わりに cURL を使用すると (またはその逆)、最終的に後悔することになるでしょうか?
PHP / Laravelを使用しています。
ベストアンサー1
Guzzle を使用する理由
まず、Guzzle は http リクエストの抽象化レイヤーです。デフォルトでは cURL を使用しますが、他の任意の http クライアントを使用することもできます。
Guzzle には cURL が必要ですか?
いいえ。Guzzle は、リクエストを送信するために任意の HTTP ハンドラを使用できます。つまり、Guzzle は cURL、PHP のストリーム ラッパー、ソケット、React などの非ブロッキング ライブラリで使用できます。リクエストを送信する別の方法を使用するように HTTP ハンドラを構成するだけです。
注記:Guzzle はこれまで、HTTP リクエストの送信に cURL のみを使用してきました。cURL は素晴らしい HTTP クライアント (おそらく最高) であり、Guzzle は利用可能な場合は引き続きデフォルトで使用します。まれですが、一部の開発者はシステムに cURL をインストールしておらず、バージョン固有の問題に遭遇しています。スワップ可能な HTTP ハンドラーを許可することで、Guzzle はよりカスタマイズ可能になり、より多くの開発者のニーズに合わせて適応できるようになりました。
Laravelを使用しているので、万が一メールAPIを使用している場合は、すでにGuzzleがインストールされているはずです。Laravelの作曲家.json提案が表示されます:
"suggest": {
...
"guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).",
...
}
もう一つの理由は、コードを再利用することです。ボグダンcURL で単純な http リクエストを実行するために必要なコードの量。Guzzle を使用すると、はるかにシンプルで、クリーンで、読みやすく、再利用できます。Http リクエストをカプセル化するサービスを作成するのは非常に簡単です。
Guzzleでは、非同期リクエストこれは、Promise を使用して JavaScript で行うのと非常によく似た方法です。
最後になりましたが、テストです。cURL を使用するよりも、API のテストやアプリのユニット テストの作成、Guzzle を使用した http リクエストのモック作成の方がはるかに簡単です。テストに関する詳細情報ここ
しかしもしあなたがやりたいだけならほんの数人単純な http リクエスト (そうではないようです) の場合、テストは気にせず、Guzzle に依存したくない場合は、cURL を使用します。