Intermediário
Consumindo APIs no Back-End com Laravel (Http Client)
Use a facade Http do Laravel para integrar serviços externos com timeout, cache e tratamento de erro.
Por que chamar APIs externas pelo Laravel?
Mesmo com APIs públicas como a PokéAPI, ou principalmente quando uma API exige chave secreta, chamar a API pelo back-end com Illuminate\Support\Facades\Http (baseada no Guzzle) permite validar dados, fazer cache e evitar expor credenciais no navegador.
Boas práticas para trainees
- Sempre defina
->timeout(5)(ou similar) para que uma API externa lenta não trave os workers PHP da sua aplicação. - Em APIs privadas, use
->withToken(config('services.api.token'))em vez de concatenar headers manualmente e nunca useenv()fora deconfig/*.php. - Cheque
$response->successful()ou$response->failed()para tratar falhas com clareza antes de acessar$response->json().
Exemplo Prático
php
use Illuminate\Support\Facades\Http;
$response = Http::acceptJson()
->timeout(5)
->get('https://pokeapi.co/api/v2/pokemon/pikachu');
if ($response->failed()) {
return back()->withErrors(['api' => 'PokéAPI indisponível no momento.']);
}
$pokemon = $response->json();
$nome = $pokemon['name'];
$tipos = collect($pokemon['types'])->pluck('type.name');