2016-11-20 3 views
2

Spring Data REST hat für mich außergewöhnlich gut funktioniert, aber ich muss in der Lage sein, einzuschränken, welche Parameter der Benutzer beim Erstellen bestimmter Ressourcen angeben darf. Zum Beispiel sollte der Benutzer nicht in der Lage sein, die ID zu diktieren, die der erzeugten Ressource oder dem Aktivierungszustand eines Kontos zugewiesen ist, sagen wir.Vorgeschlagene Möglichkeit, bestimmte Attribute beim Erstellen in Spring Data REST zu verbieten?

Meine bisherige Herangehensweise besteht einfach darin, diese Felder manuell in einem Repository-Ereignishandler @HandleBeforeCreate zu löschen oder zurückzusetzen. Gibt es eine andere, schlauere Möglichkeit, die angenommenen POST-Daten für eine Ressource zu beschränken?

Darüber hinaus gibt es Fälle, in denen ein CRUD-Aufruf zusätzliche kontextabhängige Attribute angeben muss, die nicht explizit Teil der Zielressource sind, aber beim Erstellen der Ressource verwendet werden können. Was ist der geeignete Weg, um mit diesem Fall umzugehen?

+0

Wenn Sie Jackson für die Serilisierung verwenden, versuchen Sie, das Attribut und seinen Setter mit JsonIgnore und den Getter mit JsonGetter zu kommentieren. Ich verwende diesen Trick, um zu verhindern, dass ein neuer Wert für das Attribut eingefügt oder PATCHEN wird. Ich habe nicht mit POST versucht, obwohl ich annehme, dass es auch funktioniert. –

Antwort

0

Sie können einen benutzerdefinierten Validierer definieren, indem Sie org.springframework.validation.Validator implementieren und validate(Object object, Errors errors) überschreiben und die Eingabefelder validieren und dann die erforderlichen Felder für das Eingabeanforderungsobjekt ausfüllen oder erforderliche Änderungen vornehmen.

Sie können für weitere Details here verweisen und auch here für ein Beispiel.

Verwandte Themen