Explorando o Facade HTTP do Laravel: Dicas e Curiosidades
Introdução
O Laravel oferece uma interface poderosa para realizar requisições HTTP por meio do HTTP Facade. Essa funcionalidade é ideal para consumir APIs externas ou realizar chamadas HTTP com facilidade, usando uma sintaxe simples e expressiva.
Neste tutorial, vamos explorar as principais funcionalidades do Facade HTTP, com exemplos práticos e dicas para otimizar o uso dessa ferramenta no Laravel.
—
1. O que é o Facade HTTP?
O HTTP Facade é uma interface que permite realizar requisições HTTP, incluindo GET, POST, PUT e DELETE, além de manipular headers, autenticação e muito mais.
Ele está disponível no Laravel a partir da versão 7, com base no pacote Guzzle HTTP, mas com uma API simplificada.
—
2. Exemplo Básico de Requisição GET
Para realizar uma requisição GET, você pode usar o seguinte código:
use Illuminate\Support\Facades\Http;
$response = Http::get('https://jsonplaceholder.typicode.com/posts');
$data = $response->json();
foreach ($data as $post) {
echo "Título: " . $post['title'] . "\n";
}
O método json()
converte automaticamente a resposta JSON em um array associativo do PHP.
—
3. Enviando Dados com POST
Para enviar dados em uma requisição POST, use o método post()
:
$response = Http::post('https://jsonplaceholder.typicode.com/posts', [
'title' => 'Meu Post',
'body' => 'Conteúdo do post',
'userId' => 1,
]);
if ($response->successful()) {
echo "Post criado com sucesso! ID: " . $response['id'];
}
—
4. Configurando Headers e Autenticação
O HTTP Facade permite configurar headers e autenticação com facilidade:
// Headers personalizados
$response = Http::withHeaders([
'X-API-KEY' => 'minha-chave-secreta',
])->get('https://api.exemplo.com/dados');
// Autenticação básica
$response = Http::withBasicAuth('usuario', 'senha')->get('https://api.exemplo.com/privado');
// Bearer Token
$response = Http::withToken('meu-token')->get('https://api.exemplo.com/privado');
—
5. Tratando Erros
O Laravel facilita o tratamento de erros HTTP. Aqui está como lidar com respostas malsucedidas:
$response = Http::get('https://api.exemplo.com/erro');
if ($response->failed()) {
echo "Erro: " . $response->status();
} elseif ($response->serverError()) {
echo "Erro no servidor: " . $response->status();
} elseif ($response->clientError()) {
echo "Erro no cliente: " . $response->status();
}
—
6. Testando Requisições HTTP
Durante os testes, você pode usar o método fake()
para simular respostas HTTP:
Http::fake([
'https://api.exemplo.com/*' => Http::response(['status' => 'ok'], 200),
]);
$response = Http::get('https://api.exemplo.com/teste');
echo $response['status']; // ok
—
7. Dicas Avançadas
- Timeouts: Configure limites de tempo para evitar requisições travadas.
- Retries: Use
retry()
para tentativas automáticas em caso de falha. - Debugging: Ative o log de requisições para depuração.
$response = Http::timeout(10)->retry(3, 100)->get('https://api.exemplo.com');
Publicar comentário