web-dev-qa-db-fra.com

PHP - Pourquoi utiliser Guzzle au lieu de cURL?

Dans mon application, j'ai initialement commencé à utiliser cURL pour récupérer des données à partir de différentes API. Aujourd'hui, j'ai essayé d'utiliser Guzzle pour effectuer la même tâche. Jusqu'à présent, cURL et Guzzle semblent fonctionner aussi bien.

À en juger par Github , beaucoup de gens semblent aimer Guzzle, mais je ne comprends pas vraiment pourquoi.

Ma question:

Pour ma situation (récupération de données à partir de différentes API), est-il préférable d'utiliser Guzzle? Est-ce que je finirai par le regretter si j'utilise cURL à la place de Guzzle (ou vice versa)?

J'utilise PHP/Laravel.

49
Cato Minor

Pourquoi utiliser Guzzle?

Tout d’abord, Guzzle est une couche d’abstraction pour les requêtes http, bien qu’elle utilise cURL par défaut, vous pouvez utiliser n’importe quel autre client http de votre choix:

Guzzle nécessite-t-il un curl?

Non. Guzzle peut utiliser n'importe quel gestionnaire HTTP pour envoyer des demandes. Cela signifie que Guzzle peut être utilisé avec cURL, le wrapper de flux PHP, les sockets et les bibliothèques non bloquantes telles que React. Il vous suffit de configurer un gestionnaire HTTP pour utiliser une méthode différente d’envoi de requêtes.

Remarque: Guzzle n'a historiquement utilisé que cURL pour envoyer des requêtes HTTP. cURL est un client HTTP incroyable (sans doute le meilleur), et Guzzle continuera à l’utiliser par défaut lorsqu’il sera disponible. C'est rare, mais certains développeurs n'ont pas installé cURL sur leurs systèmes ni ne rencontrent de problèmes liés à leur version. En permettant des gestionnaires HTTP échangeables, Guzzle est maintenant beaucoup plus personnalisable et capable de s'adapter aux besoins de plus de développeurs.

Depuis que vous utilisez Laravel, si vous utilisez des API de messagerie, Guzzle est déjà installé. Dans votre compositeur Larj composer.json , vous pouvez voir une suggestion:

"suggest": {
    ...
    "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).",
    ...
}

Une autre raison sera la réutilisation du code, jetez un oeil au commentaire fait par bogdan la quantité de code nécessaire pour faire une simple requête http avec cURL. Avec Guzzle, c'est beaucoup plus simple, plus propre, lisible et réutilisable. Il est très facile de créer un service qui encapsulera vos requêtes HTTP.

Guzzle vous permet également de faire demandes asynchrones , de la même manière que vous le faites avec JavaScript en utilisant des promesses.

Last but not least, des tests! Il est beaucoup plus facile de faire des tests sur votre API ou de créer des tests unitaires pour votre application et de simuler les requêtes http avec Guzzle plutôt que d'utiliser cURL. Plus d'infos sur les tests ici

[~ # ~] mais [~ # ~] si vous voulez seulement faire seulement un couple des requêtes http simples (ce qui ne semble pas être le cas) vous ne vous souciez pas des tests et vous ne voulez pas avoir une dépendance sur Guzzle aller pour cURL.

73
Fabio Antunes

Guzzle est une couche d'abstraction pour le transport HTTP qui utilise cURL là où elle est disponible.

En plus de ce qui précède, bien que vous puissiez tout faire vous-même avec cURL, Guzzle simplifie énormément les choses, en particulier pour le débogage.

5
DevDonkey