Cos’è l’HTTP Client
Il client HTTP di Laravel è una comoda API che avvolge Guzzle. Con la facadeHttp scrivi in modo conciso richieste HTTP a servizi e API esterni.
Guzzle è già installato: puoi iniziare subito senza configurazioni.
Richieste di base
GET
POST
I dati sono inviati di default comeapplication/json.
PUT / PATCH / DELETE
Gestione delle risposte
Http::get() e i metodi affini restituiscono un’istanza Illuminate\Http\Client\Response con molti metodi per ispezionare la risposta.
Opzioni di richiesta
Header
application/json è comodo acceptJson().
Per gli header CSRF (
X-CSRF-TOKEN / X-XSRF-TOKEN) delle richieste AJAX dal browser verso Laravel, consulta Protezione CSRF.Autenticazione
Bearer token (il più comune):Base URL
Se richiami spesso lo stesso host, usabaseUrl().
Form data
Perapplication/x-www-form-urlencoded usa asForm().
Timeout
Retry
Gestione degli errori
Verifica manuale
Di default il client HTTP non solleva eccezioni per 4xx/5xx. Verifica esplicitamente.Sollevare eccezioni
throw() solleva Illuminate\Http\Client\RequestException in caso di errore.
throw() restituisce la Response per la concatenazione.
Richieste parallele
Per chiamare più API in parallelo usapool().
Test
Mock con Http::fake()
Nei test usaHttp::fake() per simulare le risposte senza chiamate reali.
Verifica delle richieste
ConHttp::assertSent() verifichi il contenuto delle richieste.
Prevenire richieste sfuggite
Esempio pratico: classe di servizio per chiamate API
1
Crea la classe di servizio
2
Registralo nel service provider
3
Usalo nel controller
4
Scrivi i test
Riepilogo
Metodi principali
Metodi principali
Metodi di verifica della risposta
Metodi di verifica della risposta
Best practice per API esterne
Best practice per API esterne
- Raccogli la logica HTTP in una service class
- Imposta sempre timeout (
timeout()econnectTimeout()) - Configura retry per errori transitori (
retry()) - Nei test usa
Http::fake()per evitare chiamate reali - Aggiungi
Http::preventStrayRequests()nel setup dei test - Gestisci token e credenziali con variabili d’ambiente e
config/services.php