PHP – Warum Guzzle statt cURL verwenden?

Lesezeit: 3 Minuten

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.

  • 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


Benutzer-Avatar
Fabio Antunes

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.

  • Vielen Dank. Sie haben mich voll und ganz davon überzeugt, dass ich Guzzle verwenden sollte.

    – Cato Moll

    11. April 2016 um 17:15 Uhr

  • Benötigen Sie weitere Informationen zu a couple of simple http requests. Fordert solche APIs an wie UPS, DHL etc..komplex genug zu verwenden Guzzle Anstatt von cUrl

    – Höllenjunge

    19. November 2017 um 20:49 Uhr

  • @hellboy, das liegt an dir, ich würde mich für Guzzle entscheiden, aber es sei denn, du bist aus irgendeinem Grund ein Purist und möchtest keine externen Bibliotheken verwenden, oder wenn du deinem Komponisten eine Zeile hinzufügst, ist es die Mühe nicht wert, der Stock zum Einrollen

    – Fabio Antunes

    19. November 2017 um 21:56 Uhr

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.

1344080cookie-checkPHP – Warum Guzzle statt cURL verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy