Réponse
Dans un Handler, la Response est passée en paramètre :
- La structure
Responseencapsule tous les composants d'une réponse HTTP, offrant une API complète pour construire et manipuler les réponses HTTP. - Elle prend en charge un style fluide et chaînable (par exemple,
res.status_code(200).body("Hello")), facilitant la construction fluide des réponses. - Les fonctionnalités principales incluent :
- La définition des codes d'état et des en-têtes
- La manipulation du corps de la réponse (prise en charge des chaînes de caractères, des octets, des fichiers et des données en flux)
- La gestion des cookies
- Plusieurs méthodes de rendu de contenu
- Cette structure utilise un modèle de référence mutable, renvoyant une référence à elle-même via
&mut self, permettant aux gestionnaires de construire et personnaliser facilement les réponses HTTP pour répondre à diverses exigences de services web.
Après que le serveur reçoit une requête client, tout Handler ou middleware correspondant peut écrire des données dans la Response. Dans certains scénarios, comme lorsqu'un middleware souhaite empêcher l'exécution des middlewares et Handler suivants, vous pouvez utiliser FlowCtrl :
Écriture de contenu
Écrire des données dans une Response est simple :
-
Écrire des données en texte brut
-
Écrire des données sérialisées en JSON
Si la méthode render est appelée plusieurs fois pour écrire des données JSON, ces données ne seront pas fusionnées en un seul objet JSON. Au lieu de cela, elles seront concaténées séquentiellement en tant que fragments de texte indépendants, ce qui pourrait entraîner un format JSON invalide. Si plusieurs éléments de données doivent être retournés, ils doivent être combinés en un seul objet avant la sérialisation, ou la logique doit être gérée manuellement.
-
Écrire du HTML
Écriture d'erreurs HTTP
-
Utiliser
renderpermet d'écrire des informations d'erreur détaillées dans laResponse. -
Si des informations d'erreur personnalisées ne sont pas nécessaires, vous pouvez appeler directement
set_http_code.
Redirection vers une autre URL
- En utilisant la méthode
render, vous pouvez écrire une réponse de redirection dans laResponse, naviguant vers une nouvelle URL. Lorsque vous appelezRedirect::found, cela définit le code d'état HTTP à 302 (Found), indiquant une redirection temporaire.
ResBody
Le type de corps retourné par Response est ResBody, qui est une énumération. En cas d'erreur, il est défini sur ResBody::Error, contenant des informations d'erreur pour un traitement différé des erreurs. Notamment, StatusError n'implémente pas Writer ; cette conception vous permet de personnaliser son affichage dans le Catcher.