Cos’è una response
Un controller o una route devono restituire una qualche response al browser dell’utente. Laravel offre un meccanismo semplice per restituire response di vari formati: stringhe, array, viste, redirect, JSON e altro.Response di base
Restituire una stringa
La response più semplice è la restituzione di una stringa. Laravel la converte automaticamente in una response HTTP appropriata.Restituire un array
Se restituisci un array, Laravel lo converte automaticamente in JSON.Restituendo direttamente un modello Eloquent o una collezione, viene convertito automaticamente in JSON. È un pattern molto usato per creare API velocemente.
Restituire un modello Eloquent
Oggetto Response
Con l’helperresponse() puoi restituire una response con codice HTTP e header specifici.
response() è il body, il secondo il codice HTTP.
Codici HTTP più usati
Response di una vista
Per mostrare un template Blade da un controller usaview().
È la response più comune nelle applicazioni web.
view() è il nome della vista, il secondo un array di dati da passare.
Controllo dettagliato con response()->view()
Se vuoi indicare anche codice e header usa response()->view().
Redirect
Redirect di base
L’helperredirect() restituisce una response di redirect.
Molto usato per inviare l’utente a un’altra pagina dopo l’invio di un form.
Redirect verso una route con nome
Con la funzioneroute() puoi indicare la destinazione tramite il nome della route senza scrivere direttamente l’URL.
Poiché non serve modificare il codice se l’URL cambia, la best practice è sfruttare le route con nome.
Tornare alla pagina precedente
Conback() torni alla pagina in cui l’utente era prima.
Molto usato per il redirect in caso di errori di validazione.
Redirect con messaggi flash
Conwith() puoi allegare un messaggio in sessione al redirect.
Utile per mostrare un messaggio dopo il successo di un form.
Response JSON
Quando crei API usaresponse()->json() per restituire una response JSON.
Viene impostato automaticamente l’header Content-Type: application/json.
Anche restituendo semplicemente un array o un modello Eloquent ottieni una response JSON, ma con
response()->json() puoi controllare codice e header nel dettaglio.Header della response
Con il metodoheader() aggiungi header HTTP alla response.
withHeaders().
Esempio pratico: uso differenziato nei controller
Esempio che riassume l’uso delle response in base allo scopo.1
Definizione delle route
2
Implementazione del controller
Prossimi passi
Validazione
Rivedi come validare i dati di input prima di restituire la response.