/ / PHP - Warum sollte man Guzzle statt cURL verwenden? - PHP, Laravel, Curl, Fräulein

PHP - Warum Guzzle anstelle von cURL verwenden? - php, laravel, locken, putzen

In meiner Anwendung begann ich ursprünglich mit cURL, um Daten von verschiedenen APIs abzurufen. Heute habe ich versucht, mit Guzzle die gleiche Aufgabe zu erledigen. Bisher scheinen sowohl cURL als auch Guzzle gleich gut zu funktionieren.

Gemessen an Github, viele Leute scheinen Guzzle zu mögen, aber ich schätze den Grund nicht wirklich.

Meine Frage:

Ist es für meine Situation (Abrufen von Daten aus verschiedenen APIs) vorzuziehen, Guzzle zu verwenden? Werde ich es irgendwann bereuen, wenn ich statt Guzzle (oder umgekehrt) cURL verwende?

Ich benutze PHP / Laravel.

Antworten:

52 für die Antwort № 1

Warum Guzzle verwenden?

Zuallererst ist Guzzle eine Abstraktionsebene für eine http-Anfrage, obwohl cURL standardmäßig verwendet wird, können Sie jeden anderen gewünschten http-Client verwenden:

Benötigt Guzzle cURL?

Nein. Guzzle kann zum Senden von Anforderungen einen beliebigen HTTP-Handler verwenden. Das bedeutet, dass Guzzle kann mit cURL, PHP-Wrapper, Sockets und verwendet werden Nicht blockierende Bibliotheken wie React. Sie müssen lediglich ein HTTP konfigurieren Handler, um eine andere Methode zum Senden von Anforderungen zu verwenden

Hinweis: Guzzle hat bisher nur cURL verwendetSenden Sie HTTP-Anfragen. cURL ist ein erstaunlicher HTTP-Client (wohl der beste), und Guzzle wird es tun Verwenden Sie es weiterhin standardmäßig, wenn es verfügbar ist. Es ist selten, aber Einige Entwickler haben keine cURL auf ihren Systemen installiert Versionsspezifische Probleme. Durch das Ermöglichen austauschbarer HTTP-Handler kann Guzzle verwendet werden ist jetzt viel anpassbarer und kann sich an die Bedürfnisse von anpassen mehr Entwickler.

Wenn Sie mit Laravel eine E-Mail-API verwenden, haben Sie bereits Guzzle installiert. Auf deinen 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 Bogdan die Menge an Code, die für ein einfaches http erforderlich istanfrage mit cURL. Mit Guzzle ist es einfacher, sauberer, lesbarer und wiederverwendbar. Es ist ziemlich einfach, einen Dienst zu erstellen, der Ihre HTTP-Anforderungen enthält.

Mit Guzzle können Sie dies auch tun asynchrone AnfragenAuf eine sehr ähnliche Art und Weise machen Sie Javascript mit Versprechungen.

Last but not least Tests! Es ist viel einfacher, Tests für Ihre API durchzuführen oder Unit-Tests für Ihre App zu erstellen und die http-Anforderungen mit Guzzle zu simulieren, als cURL Hier

ABER wenn du nur tun 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 nicht eine Abhängigkeit von Guzzle für cURL haben.


2 für die Antwort № 2

Guzzle ist eine Abstraktionsebene für den HTTP-Transport, die, sofern verfügbar, cURL verwendet.

Während Sie mit cURL alles selbst erledigen können, vereinfacht Guzzle die Dinge enorm, insbesondere beim Debugging.