Validieren von Antwort-Nutzdaten anhand zusätzlicher Einschränkungen

Die Serialisierung der HTTP-Antwort ist einer der letzten Schritte bei der Bearbeitung einer Anforderung. Sowohl der Antworttext als auch die Antwort-Header müssen serialisiert werden, wobei der Antworttext in den HttpServletResponse-Ausgabe-Stream geschrieben und die Antwort-Header in Zeichenfolgen umgewandelt werden, die der Servlet-Container für das Schreiben in die Antwort verantwortet. Die System-APIs unterstützen die Serialisierung einer Reihe verschiedener Java-Objekttypen, die direkt von einer API-Handler-Methode zurückgegeben, als Wert des Texts eines Antwortobjekts festgelegt oder als Wert eines Headers zum Antwortobjekt hinzugefügt werden können.

Es gibt mehrere Arten von Antwortobjekten, deren serialisiertes Format JSON ist. Dazu gehören JsonObject, JsonWrapper und TransformResult. Standardmäßig wird ein JsonObject oder JsonWrapper nur anhand des deklarierten Antwortschemas validiert, um sicherzustellen, dass alle Eigenschaften des Objekts im Schema deklariert sind und den richtigen Datentyp haben. TransformResult-Objekte werden „implizit validiert“, da die Zuordnungsdatei, die sie erzeugt, dem zugehörigen JSON-Schema entsprechen muss.

Es ist möglich, anzufordern, dass das Framework auch ein JsonObject, JsonWrapper oder TransformResult anhand zusätzlicher im Schema definierter Beschränkungen validiert, z. B. anhand von minLength, der Gruppe erforderlicher Felder oder benutzerdefinierter Validatoren, die definiert wurden. Diese zusätzlichen Validatoren werden standardmäßig nicht eingesetzt, da sie in einer Produktionssituation, in der davon ausgegangen wird, dass die API korrekt implementiert wurde und nur gültige Daten zurückgibt, möglicherweise eine unnötige Ausgabe darstellen. Es ist auch möglich, dass die im Schema definierten Beschränkungen nur für Eingaben gelten sollen und dass die Antwort einige davon verletzen kann.

Sie können den GW-ValidateResponseHandling-Header verwenden, damit die System-API ihre Antworten anhand des deklarierten Schemas validiert. Fügen Sie dazu den Header ein und setzen Sie seinen Wert auf „true“.