Я пытаюсь использовать Spring Data REST
репозитории, аннотированные аннотацией @RepositoryRestResource
вместе с реализацией пользовательских методов. Есть 2 случая:Spring Data REST: проверка методов на основе методов
1) У меня есть репозиторий REST, аннотированный @RepositoryRestResource
, который сопоставляется с конечной точкой /users
. Кроме того, у меня есть @RestController
, который отображается на ту же конечную точку. Это приводит к тому, что методы (которые должны быть открыты) в @RepositoryRestResource
не должны быть видимыми и получать результат 405 на них. Однако валидация метода с помощью @Valid
аннотации работает над методами @RestController
. например это работает:
@ResponseBody
@RequestMapping(value = "/users")
public ResponseEntity signUp(@RequestBody @Valid final UserSignUpRequest userSignUpRequest)
2) Контроллеры, которые работают вместе с REST хранилищами являются @RepositoryRestController
контроллерами. Таким образом работают оба метода, объявленные в @RepositoryRestController
и @RepositoryRestResource
. Однако JSR-303 @Valid
аннотация по методам перестала работать, поэтому я не могу использовать @Valid
аннотация. Эта проблема уже описана DATAREST-593.
Любые идеи о том, как можно решить хотя бы одну из двух проблем? Основная идея заключается в использовании репозиториев @RepositoryRestResource
вместе с пользовательскими методами контроллера и проверкой аннотации.
Спасибо за обмен. Ваш продукт решения ответ, который сильно отличается от ответа, полученного из стандартного хранилища SDR. В вашем случае вам возвращается 500 http-статус вместо 4xx. Некоторые советы? – drenda
Вы можете настроить ответ в методе createErrorMessage. Для другого кода состояния вам просто нужно поймать ValidationException в соответствующем обработчике исключений. –