Guzzle para PHP: guia completo com exemplos

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

O que é Guzzle e para que serve?

\n\n

Guzzle é uma poderosa biblioteca PHP para trabalhar com requisições HTTP. Ela fornece uma interface conveniente para enviar requisições HTTP, processar respostas, trabalhar com cookies, sessões, requisições assíncronas e muito mais. Se você trabalha com APIs, faz scraping de páginas web ou simplesmente interage com servidores remotos, Guzzle se tornará sua ferramenta indispensável.

\n\n

Principais funcionalidades do Guzzle:

\n
    \n
  • Suporte a todos os métodos HTTP (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
  • \n
  • Trabalho com cabeçalhos, corpo da requisição, parâmetros de URL
  • \n
  • Suporte a requisições assíncronas (baseado em Promise)
  • \n
  • Processamento automático de redirecionamentos
  • \n
  • Trabalho com cookies e sessões
  • \n
  • Middleware para estender a funcionalidade
  • \n
  • Suporte a PSR-7 (interfaces PSR-7 para mensagens HTTP)
  • \n
  • Testes e mocking simplificados
  • \n
\n\n

Guzzle é usado em grandes projetos como Laravel (cliente HTTP embutido), Drupal, Magento e muitos outros.

\n\n

Instalação

\n\n

A instalação do Guzzle é feita através do Composer — gerenciador de dependências para PHP. Se você ainda não tem o Composer, instale-o pelo site oficial getcomposer.org.

\n\n

Execute o comando no terminal na raiz do seu projeto:

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

Após a instalação, inclua o autoloader do Composer no seu arquivo PHP:

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

Agora você está pronto para trabalhar com Guzzle.

\n\n

Início rápido

\n\n

Vamos enviar uma requisição GET simples para uma API pública e obter dados no 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// Obtém o corpo da resposta\n$body = $response->getBody();\n\n// Converte JSON em array\n$data = json_decode($body, true);\n\necho "Title: " . $data['title'] . "\\n";\necho "Body: " . $data['body'] . "\\n";\n?>
\n\n

Este exemplo mostra como é fácil obter dados de um servidor remoto. Guzzle processa automaticamente cabeçalhos, códigos de status e corpo da resposta.

\n\n

Métodos e funções principais

\n\n

1. get() — Requisição GET

\n

O que faz: Envia uma requisição HTTP GET para a URL especificada. Usado para obter dados.

\n

Parâmetros:

\n
    \n
  • $uri (string) — URL da requisição
  • \n
  • $options (array) — array de opções (cabeçalhos, parâmetros de query, timeouts, etc.)
  • \n
\n

Exemplo:

\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() — Requisição POST

\n

O que faz: Envia uma requisição POST. Usado para criar novos recursos ou enviar dados para o servidor.

\n

Parâmetros:

\n
    \n
  • $uri (string) — URL da requisição
  • \n
  • $options (array) — array de opções (body, form_params, json, multipart, etc.)
  • \n
\n

Exemplo:

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

Recommendations