Ich versuche, Spring Data REST
Repositories mit Annotation @RepositoryRestResource
Annotation zusammen mit benutzerdefinierten Methoden Implementierung zu verwenden. Es gibt 2 Fälle:Spring Data REST: benutzerdefinierte Methoden Validierung
1) Ich habe REST-Repository mit @RepositoryRestResource
annotiert, die /users
Endpoint zugeordnet ist. Ich habe auch @RestController
, die auf den gleichen Endpunkt zugeordnet ist. Das führt dazu, dass Methoden (die angezeigt werden sollten) in @RepositoryRestResource
nicht sichtbar sind und Ergebnis 405 auf ihnen erhalten. Die Methodenvalidierung mit @Valid
Annotation arbeitet jedoch an @RestController
Methoden. z.B. dies funktioniert:
@ResponseBody
@RequestMapping(value = "/users")
public ResponseEntity signUp(@RequestBody @Valid final UserSignUpRequest userSignUpRequest)
2) Controller, die zusammen mit REST-Repositories arbeiten, sind @RepositoryRestController
Controller. Auf diese Weise funktionieren beide in @RepositoryRestController
und @RepositoryRestResource
deklarierten Methoden. Allerdings JSR-303 @Valid
Annotation auf Methoden nicht mehr funktioniert, so kann ich nicht verwenden @Valid
Annotation. Dieses Problem wurde bereits beschrieben DATAREST-593.
Irgendwelche Ideen, wie mindestens eines von zwei Problemen gelöst werden kann? Die Hauptidee besteht darin, @RepositoryRestResource
Repositories zusammen mit benutzerdefinierten Controller-Methoden und Annotation-Validierung zu verwenden.
Dank für die gemeinsame Nutzung. Ihr Lösungsprodukt ist eine Antwort, die sich stark von der Antwort unterscheidet, die von einem SDR-Standardrepository zurückgegeben wird. Außerdem wird in Ihrem Fall ein 500 http-Status anstelle eines 4xx zurückgegeben. Ein Ratschlag? – drenda
Sie können die Antwort in der createErrorMessage-Methode anpassen. Für einen anderen Statuscode müssen Sie nur die ValidationException in der entsprechenden Ausnahmebedingungsroutine abfangen. –