[개발] - Spring/Validation
Bean Validation - HTTP 메시지 컨버터
완벽한 장면
2024. 3. 7. 20:25
Bean Validation - HTTP 메시지 컨버터
@Valid, @Validated 는 HttpMessageConverter (@RequestBody)에도 적용할 수 있다.
ValidationItemApiController 생성
package hello.itemservice.web.validation;
import hello.itemservice.domain.item.ItemSaveForm;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/validation/api/items")
public class ValidationItemController {
@PostMapping("/add")
public Object addItem(@RequestBody @Validated ItemSaveForm form,
BindingResult bindingResult) {
log.info("API 컨트롤러 호출");
if (bindingResult.hasErrors()) {
log.info("검증 오류 발생 errors={}", bindingResult);
return bindingResult.getAllErrors();
}
log.info("성공 로직 실행");
return form;
}
}
Postman을 사용해서 테스트 해보자.
1. 성공
성공 요청 로그
2. 실패 요청
실패 요청 로그
3. 검증 오류
이렇게 보내면
검증 오류 요청 로그
로그를 보면 검증 오류가 정상 수행된 것을 확인할 수 있다.
참고
HttpMessageConverter 단계에서 실패하면 예외가 발생한다.
예외 발생시 원하는 모양으로 예외를 처리하는 방법은 예외 처리 부분에서 다룬다.
728x90
반응형