Risposta
In un Handler, la Response viene passata come parametro:
- La struttura
Responseincapsula tutti i componenti di una risposta HTTP, fornendo un'API completa per costruire e manipolare le risposte HTTP. - Supporta uno stile fluido e concatenabile (es.
res.status_code(200).body("Hello")), facilitando la costruzione fluida delle risposte. - Le funzionalità principali includono:
- Impostazione dei codici di stato e degli header
- Manipolazione del corpo della risposta (supporto per stringhe, byte, file e dati in streaming)
- Gestione dei Cookie
- Metodi multipli per il rendering dei contenuti
- Questa struttura utilizza un pattern di riferimento mutabile, restituendo un riferimento a sé stessa tramite
&mut self, permettendo agli handler di costruire e personalizzare comodamente le risposte HTTP per soddisfare varie esigenze dei servizi web.
Dopo che il server riceve una richiesta dal client, qualsiasi Handler o middleware corrispondente può scrivere dati nella Response. In alcuni scenari, come quando un middleware desidera impedire l'esecuzione dei middleware e Handler successivi, puoi utilizzare FlowCtrl:
Scrittura del Contenuto
Scrivere dati in una Response è semplice:
-
Scrittura di dati in testo semplice
-
Scrittura di dati serializzati JSON
Se il metodo render viene chiamato più volte per scrivere dati JSON, questi dati non verranno uniti in un singolo oggetto JSON. Invece, verranno concatenati sequenzialmente come frammenti di testo indipendenti, potenzialmente risultando in un formato JSON non valido. Se è necessario restituire più elementi di dati, dovrebbero essere combinati in un singolo oggetto prima della serializzazione, oppure la logica dovrebbe essere gestita manualmente.
-
Scrittura HTML
Scrittura Errori HTTP
-
Utilizzando
renderè possibile scrivere informazioni dettagliate sull'errore nellaResponse. -
Se non sono necessarie informazioni di errore personalizzate, puoi chiamare direttamente
set_http_code.
Reindirizzamento a un Altro URL
- Utilizzando il metodo
render, puoi scrivere una risposta di reindirizzamento nellaResponse, navigando verso un nuovo URL. Quando chiamiRedirect::found, imposta il codice di stato HTTP a 302 (Found), indicando un reindirizzamento temporaneo.
ResBody
Il tipo Body restituito da Response è ResBody, che è un'enumerazione. In caso di errore, viene impostato a ResBody::Error, contenente informazioni sull'errore per una gestione differita degli errori. È importante notare che StatusError non implementa Writer; questo design ti permette di personalizzarne la visualizzazione nel Catcher.