In einem Handler
wird die Response
als Parameter übergeben:
Response
-Struktur kapselt alle Bestandteile einer HTTP-Antwort und bietet eine vollständige API zum Erstellen und Bearbeiten von HTTP-Antwortenres.status_code(200).body("Hello")
), was den flüssigen Aufbau von Antworten erleichtert&mut self
eine Selbstreferenz zurück und ermöglicht so Handlern, bequem HTTP-Antworten zu erstellen und anzupassen, um verschiedenen Webdienst-Anforderungen gerecht zu werdenNachdem der Server eine Client-Anfrage empfangen hat, können alle passenden Handler
und Middleware Daten in die Response
schreiben. In bestimmten Fällen, z.B. wenn eine Middleware die Ausführung nachfolgender Middleware und Handler
verhindern möchte, können Sie FlowCtrl
verwenden:
Das Schreiben von Daten in die Response
ist sehr einfach:
Schreiben von reinen Textdaten
Schreiben von JSON-serialisierten Daten
Wenn die render
-Methode mehrfach zum Schreiben von JSON-Daten aufgerufen wird, werden diese nicht zu einem JSON-Objekt zusammengeführt, sondern als unabhängige Textfragmente sequentiell verkettet, was zu einem ungültigen JSON-Format führen kann. Wenn mehrere Daten zurückgegeben werden sollen, sollten sie zu einem Objekt kombiniert und dann auf einmal serialisiert oder die Logik selbst verarbeitet werden.
Schreiben von HTML
Mit render
können detaillierte Fehlerinformationen in die Response
geschrieben werden.
Falls keine benutzerdefinierten Fehlermeldungen benötigt werden, kann direkt set_http_code
aufgerufen werden.
render
-Methode kann verwendet werden, um eine Weiterleitungsantwort in die Response
zu schreiben, die zu einer neuen URL navigiert. Beim Aufruf der Redirect::found
-Methode wird der HTTP-Statuscode auf 302 (Found) gesetzt, was eine temporäre Weiterleitung bedeutet.
Der von der Response zurückgegebene Body-Typ ist ResBody
, eine Enumeration, die bei Fehlern auf ResBody::Error
gesetzt wird. Diese enthält Fehlerinformationen zur späteren Verarbeitung. StatusError
implementiert Writer
nicht, um Ihnen die Möglichkeit zu geben, die Darstellungsweise in Catcher
selbst zu definieren.