Cliente HTTP para PHP: mejores bibliotecas para trabajar con solicitudes

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
Here is the translated HTML content from Russian to Spanish (Español), keeping all HTML tags and only translating the text content inside them. ```html

Cliente HTTP para PHP: mejores bibliotecas para trabajar con solicitudes



El desarrollo moderno en PHP rara vez prescinde del envío de solicitudes HTTP: integración con APIs externas, extracción de datos de páginas web, verificación de disponibilidad de servicios. Las herramientas integradas de PHP (por ejemplo, file_get_contents() o cURL) a menudo no son lo suficientemente flexibles o convenientes. Afortunadamente, el ecosistema de PHP ofrece potentes bibliotecas cliente que simplifican el trabajo con HTTP. En este artículo analizaremos las mejores bibliotecas de cliente HTTP para PHP, sus características y ejemplos de uso.



1. Guzzle — el estándar de facto



Guzzle es la biblioteca más popular para trabajar con HTTP en PHP. Está instalada en millones de proyectos, incluyendo Laravel, Drupal y Symfony. Guzzle proporciona una interfaz limpia orientada a objetos, soporta solicitudes asíncronas, middleware, grupos de conexiones y PSR-18 (HTTP Client).



Instalación

composer require guzzlehttp/guzzle


Ejemplo: solicitud GET con procesamiento de respuesta

<?phprequire 'vendor/autoload.php';

use GuzzleHttp\\Client;

$client = new Client([ 'base_uri' => 'https://api.github.com/', 'timeout' => 5.0,]);

$response = $client->request('GET', 'users/octocat');

echo $response->getStatusCode(); // 200$body = json_decode($response->getBody(), true);echo $body['login']; // octocat?>


Solicitud asíncrona

<?php$promise = $client->getAsync('https://httpbin.org/delay/1');$promise->then(    function ($response) {        echo 'Listo: ' . $response->getStatusCode();    },    function ($exception) {        echo 'Error: ' . $exception->getMessage();    });$promise->wait(); // obligatorio llamar para ejecutar?>


Ventajas: enorme comunidad, flexibilidad, middleware para registro/caché, soporte completo de PSR-7/PSR-18.



2. Symfony HttpClient — rápido y moderno



El componente Symfony HttpClient apareció en Symfony 4.4 y rápidamente ganó popularidad gracias a su alto rendimiento, soporte integrado de multiplexación (HTTP/2) y excelente integración con Symfony. También es compatible con PSR-18.



Instalación

composer require symfony/http-client


Ejemplo: solicitudes paralelas

<?phprequire 'vendor/autoload.php';

use Symfony\\Component\\HttpClient\\HttpClient;

$client = HttpClient::create();

$responses = [];$urls = [ 'https://api.github.com/users/octocat', 'https://api.github.com/users/nonexistent',];

foreach ($urls as $url) { $responses[] = $client->request('GET', $url);}

foreach ($responses as $response) { // El método getContent() espera automáticamente la respuesta echo $response->getStatusCode() . ' - ' . $response->getContent(false) . "";}?>


Uso avanzado: reintentos y caché

<?phpuse Symfony\\Component\\HttpClient\\RetryableHttpClient;use Symfony\\Component\\HttpClient\\HttpClient;

$client = new RetryableHttpClient( HttpClient::create(['timeout' => 2.0]), maxRetries: 3);

$response = $client->request('GET', 'https://example.com');echo $response->getContent();?>


Ventajas: alta velocidad, mecanismo de reintentos integrado, soporte de HTTP/2 push, bajo consumo de memoria.



3. cURL (extensión de PHP) — clásico



La extensión cURL es una solución integrada en PHP que funciona directamente con libcurl. No requiere instalar bibliotecas de terceros, pero el código resulta de más bajo nivel. Es adecuada para tareas simples o cuando no se puede usar Composer.



Ejemplo: solicitud POST simple

<?php$ch = curl_init('https://httpbin.org/post');curl_setopt_array($ch, [    CURLOP
```                    

Recommendations