php - library - symfony http client




PHP-Pourquoi utiliser Guzzle au lieu de CURL? (2)

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.


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.


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 a toujours utilisé 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é. Sur votre composer.json Laravel, 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 coup d'œil au commentaire de Bogdan la quantité de code nécessaire pour effectuer 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 des requêtes asynchrones , de la même façon que vous utilisez javascript avec 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 here

MAIS si vous ne voulez faire que quelques requêtes http simples (ce qui ne semble pas être le cas), vous n’aurez pas à vous soucier des tests et vous ne voulez pas avoir une dépendance sur Guzzle pour cURL.







guzzle