[SPRING] Spring 5 Webflux 기능 끝점 - 입력 유효성 검사를 수행하는 방법?
SPRINGSpring 5 Webflux 기능 끝점 - 입력 유효성 검사를 수행하는 방법?
현재 문서 (5.0.0.RELEASE)에 따르면 Spring Webflux는 주석이 달린 컨트롤러로 작업 할 때 유효성 검사를 지원합니다.
그러나 기능적인 끝점을 사용하여 자동화하는 방법에 대해서는 언급하지 않았습니다. 실제로 문서에서 입력 처리의 유일한 예는 아무 것도 검증하지 않습니다.
public Mono<ServerResponse> createPerson(ServerRequest request) {
Mono<Person> person = request.bodyToMono(Person.class);
return ServerResponse.ok().build(repository.savePerson(person));
}
이 작업을 수동으로 수행해야합니까, 아니면 자동으로 수행 할 방법이 있습니까?
해결법
-
==============================
1.Spring 버전 5.0에서는 기능 엔드 포인트에서 유효성 검사를 자동으로 수행 할 방법이 없으므로 이러한 유효성 검증은 수동으로 수행해야합니다.
Spring 버전 5.0에서는 기능 엔드 포인트에서 유효성 검사를 자동으로 수행 할 방법이 없으므로 이러한 유효성 검증은 수동으로 수행해야합니다.
현재 구체적인 계획은 없지만 앞으로는 일종의 검증을 추가 할 것입니다. 그러나 그때조차도 자동 메커니즘이 아닌 명시적인 메소드 호출이 될 것입니다. 전반적으로 기능 엔드 포인트 모델은 주석 기반 모델보다 훨씬 명확하게 설계되었습니다.
-
==============================
2.arjen-poutsma가 말했듯이, Spring 5 기능 엔드 포인트에서 자동 검증을 실행할 방법이 없다.
arjen-poutsma가 말했듯이, Spring 5 기능 엔드 포인트에서 자동 검증을 실행할 방법이 없다.
Spring 문서는 이에 대해 명확하지 않으며 어떤 접근법도 제안하지 않는다.
이 Baeldung 기사에서이 접근법을 사용하여 검증을 실행하는 방법에 대한 아이디어를 얻을 수 있습니다 (면책 조항 : 저는이 기사의 저자입니다 :))
요약하면 다음 단계를 수행 할 수 있습니다.
편집하다:
저는이 관련 Spring 문제를 추적 해 왔으며, 이제이 주제와 관련된 공식 문서로 보입니다 : https://github.com/spring-projects/spring-framework/blob/master/src/docs/asciidoc/web /webflux-functional.adoc#validation
제안 된 방법은이 기사에서 설명한대로 유효성 검사기를 사용하는 것입니다.
-
==============================
3.현재 버전 (2.0.4.RELEASE)에서는 핸들을 사용하여 자동 유효성 검사를 수행하는 방법이 없지만 항상 다음과 같은 수동 유효성 검사를 수행 할 수 있습니다.
현재 버전 (2.0.4.RELEASE)에서는 핸들을 사용하여 자동 유효성 검사를 수행하는 방법이 없지만 항상 다음과 같은 수동 유효성 검사를 수행 할 수 있습니다.
@Slf4j @Component @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class MyHandlerValidator implements HandlerValidator<MyResource> { Validator validator; @Override public void callValidator(final MyResource fdr) { final DataBinder binder = new DataBinder(fdr); binder.setValidator(validator); binder.validate(); if (binder.getBindingResult().hasErrors()) { final String reason = binder.getBindingResult().getFieldError().toString(); log.error(reason); throw new ResponseStatusException(HttpStatus.BAD_REQUEST, reason); } } }
자동 유효성 검사와 같은 WebExchangeBindException을 던져야하지만,이 예외를 생성하기 위해서는 종속성이있는 MethodParameter 마녀를 만들 수 없습니다.
from https://stackoverflow.com/questions/46508618/spring-5-webflux-functional-endpoints-how-to-perform-input-validation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring RabbitMQ로 새로운 큐를 생성하는 방법? (0) | 2019.04.17 |
---|---|
[SPRING] db에서 cron 표현식을로드하고 Spring에서 다시 스케줄하는 방법은 무엇입니까? (0) | 2019.04.17 |
[SPRING] 어떻게 클래스 내에서 Jpa 저장소를 동적으로 생성합니까? (0) | 2019.04.17 |
[SPRING] @Value 주석과 환경 API의 차이점은 무엇입니까? (0) | 2019.04.17 |
[SPRING] IntelliJ와 스프링 통합 (0) | 2019.04.17 |