Response
In einem Handler wird die Response als Parameter übergeben:
- Die
Response-Struktur kapselt alle Komponenten einer HTTP-Antwort und bietet eine umfassende API zum Erstellen und Bearbeiten von HTTP-Antworten. - Sie unterstützt einen flüssigen, verkettbaren Stil (z. B.
res.status_code(200).body("Hello")), der den reibungslosen Aufbau von Antworten erleichtert. - Zu den Kernfunktionen gehören:
- Setzen von Statuscodes und Headern
- Bearbeiten des Antwort-Bodys (Unterstützung von Strings, Bytes, Dateien und Streaming-Daten)
- Verwalten von Cookies
- Mehrere Methoden zur Inhaltsdarstellung
- Diese Struktur verwendet ein veränderliches Referenzmuster, das über
&mut selfeine Referenz auf sich selbst zurückgibt, sodass Handler bequem HTTP-Antworten aufbauen und anpassen können, um verschiedenen Webdienst-Anforderungen gerecht zu werden.
Nachdem der Server eine Client-Anfrage empfangen hat, können alle passenden Handler oder Middleware Daten in die Response schreiben. In bestimmten Szenarien, z. B. wenn eine Middleware die Ausführung nachfolgender Middleware und Handler verhindern möchte, können Sie FlowCtrl verwenden:
Inhalte schreiben
Das Schreiben von Daten in eine Response ist unkompliziert:
-
Schreiben von Klartextdaten
-
Schreiben von JSON-serialisierten Daten
Wenn die render-Methode mehrmals aufgerufen wird, um JSON-Daten zu schreiben, werden diese Daten nicht zu einem einzigen JSON-Objekt zusammengeführt. Stattdessen werden sie sequenziell als unabhängige Textfragmente verkettet, was möglicherweise zu einem ungültigen JSON-Format führt. Wenn mehrere Datenelemente zurückgegeben werden müssen, sollten sie vor der Serialisierung zu einem einzigen Objekt kombiniert oder die Logik manuell behandelt werden.
-
Schreiben von HTML
HTTP-Fehler schreiben
-
Mit
renderkönnen detaillierte Fehlerinformationen in dieResponsegeschrieben werden. -
Wenn keine benutzerdefinierten Fehlerinformationen benötigt werden, können Sie direkt
set_http_codeaufrufen.
Weiterleitung zu einer anderen URL
- Mit der
render-Methode können Sie eine Weiterleitungsantwort in dieResponseschreiben, um zu einer neuen URL zu navigieren. Wenn SieRedirect::foundaufrufen, wird der HTTP-Statuscode auf 302 (Found) gesetzt, was eine temporäre Weiterleitung anzeigt.
ResBody
Der von Response zurückgegebene Body-Typ ist ResBody, eine Enumeration. Im Fehlerfall wird er auf ResBody::Error gesetzt, der Fehlerinformationen für die verzögerte Fehlerbehandlung enthält. Bemerkenswert ist, dass StatusError Writer nicht implementiert; dieses Design ermöglicht es Ihnen, seine Darstellung im Catcher anzupassen.