PHP – ¿Por qué usar Guzzle en lugar de cURL?

3 minutos de lectura

En mi aplicación, originalmente comencé a usar cURL para recuperar datos de varias API. Hoy intenté usar Guzzle para completar la misma tarea. Hasta ahora, tanto cURL como Guzzle parecen funcionar igual de bien.

A juzgar por Githuba mucha gente parece gustarle Guzzle, pero realmente no aprecio por qué.

Mi pregunta:

Para mi situación (recuperación de datos de varias API), ¿es preferible usar Guzzle? ¿Me arrepentiré eventualmente si uso cURL en lugar de Guzzle (o viceversa)?

Estoy usando PHP/Laravel.

  • Si es posible, Guzzle usa cURL internamente, por lo que no es una alternativa tanto como un contenedor. Los principales beneficios de usar Guzzle sobre cURL es la API que ofrece, lo que da como resultado un código más conciso y legible. Por ejemplo, mire la diferencia entre el código en esta pregunta y la respuesta aceptada, el código cURL es mucho más detallado que la implementación de Guzzle.

    – Bogdán

    11 de abril de 2016 a las 12:02


avatar de usuario
fabio antunes

¿Por qué usar Guzzle?

En primer lugar, Guzzle es una capa de abstracción para la solicitud http, aunque usa cURL de forma predeterminada, puede usar cualquier otro cliente http que desee:

¿Guzzle requiere cURL?

No. Guzzle puede usar cualquier controlador HTTP para enviar solicitudes. Esto significa que Guzzle se puede usar con cURL, el contenedor de flujo de PHP, sockets y bibliotecas sin bloqueo como React. Solo necesita configurar un controlador HTTP para usar un método diferente de envío de solicitudes

Nota: Guzzle históricamente solo ha utilizado cURL para enviar solicitudes HTTP. cURL es un increíble cliente HTTP (posiblemente el mejor), y Guzzle continuará usándolo de manera predeterminada cuando esté disponible. Es raro, pero algunos desarrolladores no tienen cURL instalado en sus sistemas o se encuentran con problemas específicos de la versión. Al permitir controladores HTTP intercambiables, Guzzle ahora es mucho más personalizable y puede adaptarse para satisfacer las necesidades de más desarrolladores.

Dado que está utilizando Laravel, si por casualidad utiliza alguna API de correo electrónico, a estas alturas ya tiene Guzzle instalado. En tu Laravel compositor.json Puedes ver una sugerencia:

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

Otra razón será la reutilización del código, echa un vistazo al comentario hecho por bogdan sobre la cantidad de código necesario para hacer una solicitud http simple con cURL. Con Guzzle es mucho más simple, limpio, legible y reutilizable. Es bastante fácil crear un servicio que encapsule sus solicitudes Http.

Guzzle también te permite hacer solicitudes asíncronasde una manera muy similar a lo que haces con javascript usando promesas.

Por último, pero no menos importante, ¡pruebas! Es mucho más fácil hacer pruebas a su API o crear pruebas unitarias para su aplicación y burlarse de las solicitudes http con Guzzle que usar cURL. Más info sobre las pruebas aquí

PERO si solo quieres hacer solo un par de solicitudes http simples (lo que no parece ser el caso) no le importan las pruebas y no desea depender de Guzzle para cURL.

  • Gracias. Me has convencido por completo de que debería usar Guzzle.

    – Catón Menor

    11/04/2016 a las 17:15

  • Necesita más información sobre a couple of simple http requests. Está solicitando API como UPS, DHL etc.. lo suficientemente complejo como para usar Guzzle en vez de cUrl

    – infierno

    19 de noviembre de 2017 a las 20:49

  • @hellboy, depende de ti decidir, yo elegiría guzzle, pero a menos que, por alguna razón, seas un purista y no quieras usar bibliotecas externas, o si agregar una línea a tu compositor no vale la pena el esfuerzo, el palo para rizar

    – Fabio Antunes

    19 de noviembre de 2017 a las 21:56

Guzzle es para cURL lo que axios es para XMLHttpRequest.

Guzzle es una capa de abstracción para el transporte HTTP que usa cURL cuando está disponible.

Además de lo anterior, aunque puedes hacer todo tú mismo con cURL, Guzzle simplifica enormemente las cosas, especialmente en lo que respecta a la depuración.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad