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
Json<T> rendert ein vollstaendiges JSON-Dokument. In Salvo 0.94 und spaeter ersetzt das Rendern von Json bereits in Response gepufferte Body-Bytes, statt sie anzuhängen. Um mehrere JSON-Datensaetze auszugeben, serialisieren Sie jeden Datensatz selbst und haengen ihn mit write_body an, zum Beispiel fuer NDJSON.
-
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.