코드 그라데이션

Bean Validation - HTTP 메시지 컨버터 본문

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

'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