In meiner Anwendung habe ich ursprünglich damit begonnen, cURL zu verwenden, um Daten von verschiedenen APIs abzurufen. Heute habe ich versucht, Guzzle zu verwenden, um dieselbe Aufgabe zu erledigen. Bisher scheinen sowohl cURL als auch Guzzle gleich gut zu funktionieren.
Gemessen an GitHubviele Leute scheinen Guzzle zu mögen, aber ich weiß nicht wirklich, warum.
Meine Frage:
Ist es für meine Situation (Abrufen von Daten von verschiedenen APIs) besser, Guzzle zu verwenden? Werde ich es irgendwann bereuen, wenn ich cURL statt Guzzle verwende (oder umgekehrt)?
Ich verwende PHP / Laravel.
Warum Guzzle verwenden?
Zunächst einmal ist Guzzle eine Abstraktionsschicht für HTTP-Anforderungen, obwohl es standardmäßig cURL verwendet, können Sie jeden anderen gewünschten HTTP-Client verwenden:
Benötigt Guzzle cURL?
Nein. Guzzle kann jeden HTTP-Handler verwenden, um Anfragen zu senden. Das bedeutet, dass Guzzle mit cURL, dem Stream-Wrapper von PHP, Sockets und nicht blockierenden Bibliotheken wie React verwendet werden kann. Sie müssen lediglich einen HTTP-Handler konfigurieren, um eine andere Methode zum Senden von Anforderungen zu verwenden
Notiz: Guzzle hat in der Vergangenheit cURL nur zum Senden von HTTP-Anfragen verwendet. cURL ist ein erstaunlicher HTTP-Client (wohl der beste), und Guzzle wird ihn weiterhin standardmäßig verwenden, wenn er verfügbar ist. Es ist selten, aber einige Entwickler haben cURL nicht auf ihren Systemen installiert oder stoßen auf versionsspezifische Probleme. Durch das Zulassen austauschbarer HTTP-Handler ist Guzzle jetzt viel anpassbarer und kann sich an die Bedürfnisse von mehr Entwicklern anpassen.
Da Sie Laravel verwenden, haben Sie Guzzle bereits installiert, wenn Sie zufällig eine E-Mail-API verwenden. Auf deinem Laravel composer.json Sie können einen Vorschlag sehen:
"suggest": {
...
"guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).",
...
}
Ein weiterer Grund wird die Wiederverwendung von Code sein, werfen Sie einen Blick auf den Kommentar von bogdan über die Menge an Code, die für eine einfache http-Anfrage mit cURL benötigt wird. Mit Guzzle ist es viel einfacher, sauberer, lesbarer und wiederverwendbar. Es ist ganz einfach, einen Dienst zu erstellen, der Ihre HTTP-Anfragen kapselt.
Guzzle ermöglicht es Ihnen auch, dies zu tun asynchrone Anfragenauf sehr ähnliche Weise, wie Sie es mit Javascript tun, indem Sie Promises verwenden.
Last but not least, Tests! Es ist viel einfacher, Tests an Ihrer API durchzuführen oder Unit-Tests für Ihre App zu erstellen und die HTTP-Anfragen mit Guzzle zu simulieren, als cURL zu verwenden. Mehr Infos zu den Prüfungen hier
ABER wenn du nur machen willst nur ein paar von einfachen HTTP-Anfragen (was nicht der Fall zu sein scheint) interessieren Sie sich nicht für Tests und Sie möchten keine Abhängigkeit von Guzzle haben, gehen Sie für cURL.
Guzzle ist für cURL das, was Axios für XMLHttpRequest ist.
Guzzle ist eine Abstraktionsschicht für den HTTP-Transport, die, sofern verfügbar, cURL verwendet.
Während Sie mit cURL alles selbst machen können, vereinfacht Guzzle die Dinge enorm, insbesondere beim Debuggen.
Wenn möglich, verwendet Guzzle intern cURL, also ist es weniger eine Alternative als ein Wrapper. Der Hauptvorteil der Verwendung von Guzzle gegenüber cURL ist die angebotene API, die zu einem prägnanteren und lesbareren Code führt. Schauen Sie sich zum Beispiel den Unterschied zwischen dem Code in dieser Frage und der akzeptierten Antwort an, der cURL-Code ist viel ausführlicher als die Guzzle-Implementierung.
– Bogdan
11. April 2016 um 12:02 Uhr