티스토리 뷰

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
반응형

'[개발] - Spring > Validation' 카테고리의 다른 글

Form 전송 객체 분리 - 개발  (0) 2024.03.06
Form 전송 객체 분리 - 소개  (0) 2024.03.06
Bean Validation - groups  (0) 2024.03.05
Bean Validation - 한계  (0) 2024.03.05
Bean Validation - 수정에 적용  (0) 2024.03.04
Comments
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
250x250