Zum Inhalt springen

Strict Mode

Kurzantwort: Der Strict Mode entscheidet, ob eine unzulässige Anfrage einen Fehler auslöst oder still ignoriert wird. Er steht pro Request im RequestContext und wird aus der Umgebungsvariablen STRICT_MODE vorbelegt – Standard true.


Situationstrikt (true)tolerant (false)
Rolle für die Operation fehltMissingPermissionException (403)Prüfung liefert false, es kommen keine Daten
Lesezugriff auf ein Modell ohne RechtAbbruchnull bzw. leeres Ergebnis
Verschachteltes Anlegen ohne RecursiveType.CREATERecursiveOperationNotAllowed (400) recursive-create-not-allowed|<feld>der Eintrag wird verworfen, das Feld bleibt leer
Angefordertes Feld existiert nicht oder ist nicht erlaubtFehlerFeld wird weggelassen

Nicht vom Strict Mode betroffen:

  • ein fehlender @type beim Anlegen auf einer abstrakten Beziehung – der ist immer Pflicht (400 mit Feldbezug)
  • die Feldvalidierung – Regelverstöße sind immer ein 422
  • die Mandantenprüfung – Routingfehler scheitern immer
private boolean strictMode =
Boolean.parseBoolean(System.getenv().getOrDefault("STRICT_MODE", "true"));

Der Wert wird beim Anlegen des RequestContext gesetzt und gilt für den gesamten Request einschließlich aller Rekursionsebenen.

Der tolerante Modus ist für Aufrufer gedacht, die mit einer breiten Anfrage (["*"]) arbeiten und nicht wissen können, welche Felder ihr Benutzer sehen darf: Sie bekommen, was erlaubt ist, statt eines Fehlers. Für alles andere ist true die richtige Einstellung – ein still verschlucktes Feld oder ein still verworfenes Kindobjekt ist ein Fehler, der erst spät auffällt.

STRICT_MODE=true in allen Umgebungen. Wer tolerantes Verhalten braucht, sollte das gezielt und dokumentiert tun, nicht als Standardeinstellung.