Skip to main content

Cos’è l’HTTP Client

Il client HTTP di Laravel è una comoda API che avvolge Guzzle. Con la facade Http scrivi in modo conciso richieste HTTP a servizi e API esterni.
Guzzle è già installato: puoi iniziare subito senza configurazioni.

Richieste di base

GET

Parametri di query come array.

POST

I dati sono inviati di default come application/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.
Puoi accedere alla risposta JSON anche come array.

Opzioni di richiesta

Per accettare 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):
Basic auth:

Base URL

Se richiami spesso lo stesso host, usa baseUrl().

Form data

Per application/x-www-form-urlencoded usa asForm().

Timeout

In caso di timeout viene sollevata Illuminate\Http\Client\ConnectionException. Imposta sempre timeout quando chiami API esterne.

Retry

Retry condizionali:

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.
Gestione dell’eccezione:

Richieste parallele

Per chiamare più API in parallelo usa pool().
Molto più veloce rispetto all’esecuzione sequenziale. Utile in dashboard che chiamano più API.

Test

Mock con Http::fake()

Nei test usa Http::fake() per simulare le risposte senza chiamate reali.
Mock per URL specifici:
Sequenze di risposte:

Verifica delle richieste

Con Http::assertSent() verifichi il contenuto delle richieste.
Chiama sempre Http::fake() all’inizio del test. Con Http::preventStrayRequests() fai in modo che le richieste non mockate lancino eccezioni.

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

  • Raccogli la logica HTTP in una service class
  • Imposta sempre timeout (timeout() e connectTimeout())
  • 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
Ultima modifica il 13 luglio 2026