Guzzle para PHP: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Guzzle y para qué sirve?

\n\n

Guzzle es una potente biblioteca de PHP para trabajar con solicitudes HTTP. Proporciona una interfaz conveniente para enviar solicitudes HTTP, procesar respuestas, trabajar con cookies, sesiones, solicitudes asíncronas y mucho más. Si trabajas con APIs, extraes contenido de páginas web o simplemente interactúas con servidores remotos, Guzzle se convertirá en tu herramienta indispensable.

\n\n

Principales capacidades de Guzzle:

\n
    \n
  • Soporte para todos los métodos HTTP (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
  • \n
  • Trabajo con cabeceras, cuerpo de la solicitud, parámetros de URL
  • \n
  • Soporte para solicitudes asíncronas (basadas en Promesas)
  • \n
  • Manejo automático de redirecciones
  • \n
  • Trabajo con cookies y sesiones
  • \n
  • Middleware para ampliar la funcionalidad
  • \n
  • Soporte para PSR-7 (interfaces PSR-7 para mensajes HTTP)
  • \n
  • Pruebas y simulación sencillas
  • \n
\n\n

Guzzle se utiliza en proyectos importantes como Laravel (cliente HTTP integrado), Drupal, Magento y muchos otros.

\n\n

Instalación

\n\n

La instalación de Guzzle se realiza a través de Composer, el gestor de dependencias para PHP. Si aún no tienes Composer, instálalo desde el sitio oficial getcomposer.org.

\n\n

Ejecuta el siguiente comando en la terminal en la raíz de tu proyecto:

\n\n
composer require guzzlehttp/guzzle
\n\n

Después de la instalación, incluye el cargador automático de Composer en tu archivo PHP:

\n\n
require 'vendor/autoload.php';
\n\n

Ahora estás listo para trabajar con Guzzle.

\n\n

Inicio rápido

\n\n

Enviemos una solicitud GET simple a una API pública y obtengamos datos en formato JSON.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse GuzzleHttp\\Client;\n\n$client = new Client();\n$response = $client->get('https://jsonplaceholder.typicode.com/posts/1');\n\n// Obtenemos el cuerpo de la respuesta\n$body = $response->getBody();\n\n// Convertimos JSON a un array\n$data = json_decode($body, true);\n\necho "Title: " . $data['title'] . "\\n";\necho "Body: " . $data['body'] . "\\n";\n?>
\n\n

Este ejemplo muestra lo fácil que es obtener datos de un servidor remoto. Guzzle maneja automáticamente las cabeceras, los códigos de estado y el cuerpo de la respuesta.

\n\n

Métodos y funciones principales

\n\n

1. get() — Solicitud GET

\n

Qué hace: Envía una solicitud HTTP GET a la URL especificada. Se utiliza para obtener datos.

\n

Parámetros:

\n
    \n
  • $uri (string) — URL de la solicitud
  • \n
  • $options (array) — Array de opciones (cabeceras, parámetros de consulta, tiempos de espera, etc.)
  • \n
\n

Ejemplo:

\n
<?php\n$client = new GuzzleHttp\\Client();\n$response = $client->get('https://api.github.com/users/octocat', [\n    'headers' => [\n        'Accept' => 'application/json',\n        'User-Agent' => 'Guzzle-Demo'\n    ],\n    'query' => [\n        'page' => 1,\n        'per_page' => 10\n    ]\n]);\n\necho $response->getStatusCode(); // 200\necho $response->getBody();\n?>
\n\n

2. post() — Solicitud POST

\n

Qué hace: Envía una solicitud POST. Se utiliza para crear nuevos recursos o enviar datos al servidor.

\n

Parámetros:

\n
    \n
  • $uri (string) — URL de la solicitud
  • \n
  • $options (array) — Array de opciones (body, form_params, json, multipart, etc.)
  • \n
\n

Ejemplo:

\n
<?php\n$client = new GuzzleHttp\\Client();\n$response = $client->post('https://jsonplaceholder.typicode.com/posts', [\n    'json' => [\n        'title' => 'Nuevo post',\n        'body' => 'Contenido del post',\n        'userId' => 1\n    ]\n]);\n\necho $response->getStatusCode(); // 201\n$data = json_decode($response->getBody(), true);\nprint_r(                    

Recommendations