Cliente HTTP para PHP: as melhores bibliotecas para trabalhar com requisições

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
Here is the translated HTML content from Russian to Portuguese (Português), keeping all HTML tags and only translating the text content inside them. ```html

Cliente HTTP para PHP: principais bibliotecas para trabalhar com requisições



O desenvolvimento moderno em PHP raramente dispensa o envio de requisições HTTP: integração com APIs externas, parsing de páginas web, verificação de disponibilidade de serviços. As ferramentas nativas do PHP (como file_get_contents() ou cURL) muitas vezes não são suficientemente flexíveis ou convenientes. Felizmente, o ecossistema PHP oferece bibliotecas cliente poderosas que simplificam o trabalho com HTTP. Neste artigo, vamos analisar as principais bibliotecas de cliente HTTP para PHP, suas características e exemplos de uso.



1. Guzzle — o padrão de facto



Guzzle é a biblioteca mais popular para trabalhar com HTTP em PHP. Ela está instalada em milhões de projetos, incluindo Laravel, Drupal e Symfony. Guzzle fornece uma interface orientada a objetos limpa, suporta requisições assíncronas, middleware, pools de conexão e PSR-18 (HTTP Client).



Instalação

composer require guzzlehttp/guzzle


Exemplo: requisição GET com tratamento da resposta

<?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?>


Requisição assíncrona

<?php$promise = $client->getAsync('https://httpbin.org/delay/1');$promise->then(    function ($response) {        echo 'Pronto: ' . $response->getStatusCode();    },    function ($exception) {        echo 'Erro: ' . $exception->getMessage();    });$promise->wait(); // obrigatório chamar para executar?>


Vantagens: comunidade enorme, flexibilidade, middleware para logging/caching, suporte completo a PSR-7/PSR-18.



2. Symfony HttpClient — rápido e moderno



O componente Symfony HttpClient surgiu no Symfony 4.4 e rapidamente ganhou popularidade devido ao alto desempenho, suporte nativo a multiplexação (HTTP/2) e excelente integração com Symfony. Ele também é compatível com PSR-18.



Instalação

composer require symfony/http-client


Exemplo: requisições 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) { // O método getContent() aguarda automaticamente a resposta echo $response->getStatusCode() . ' - ' . $response->getContent(false) . "";}?>


Uso avançado: retry e caching

<?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();?>


Vantagens: alta velocidade, mecanismo de retry embutido, suporte a HTTP/2 push, baixo consumo de memória.



3. cURL (extensão do PHP) — clássico



A extensão cURL é uma solução nativa do PHP que trabalha diretamente com libcurl. Ela não requer instalação de bibliotecas de terceiros, mas o código acaba sendo de nível mais baixo. É adequada para tarefas simples ou quando não é possível usar o Composer.



Exemplo: requisição POST simples

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

Recommendations