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
Json<T> renderizza un documento JSON completo. In Salvo 0.94 e versioni successive, renderizzare Json sostituisce i byte del corpo gia presenti in Response invece di accodarli. Per emettere piu record JSON, serializza manualmente ogni record e accodalo con write_body, ad esempio producendo NDJSON.
-
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.