API VALIDATION
- JSON 데이터를 받아서 오류검출하는 과정을 살펴보자
@Data
public class ItemSaveForm {
@NotBlank
//빈값 + 공백만 있는 경우를 허용하지 않음
private String itemName;
@NotNull
@Range(min = 1000, max = 1000000)
//빈값 + 공백만 있는 경우를 허용하지 않음
//정해진 범위 안의 값이어야 한다
private Integer price;
@NotNull
@Max(value = 9999)
//정해진 최대값 내에 있어야 한다다
private Integer quantity;
}
객체 설정을 해준다
제약 조건을 어노테이션 형식으로 지정해준다
@Slf4j
@RestController
@RequestMapping("validation/api/items")
public class ValidationItemApiController {
@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;
}
//@RequestBody -> HTTP 메시지 바디를 직접 조회하는 기능
//@RestController -> 클래스에 해당하는 모든 컨트롤러에 @ResponseBody 기능
}
위와 같이 코드를 재작해주고 POST 형식으로 JSON을 보내주면 3가지 결과를 얻을 수 있다
성공 : 성공
실패 요청 : JSON을 객체로 생성하는 것을 실패 → 지정해준 형식과 다르게 요청이와서 실패 (객체 생성 실패)
검증 오류 요청 : JSON을 객체로 생성하는 것은 성공했고, 검증에서 실패함 → Validator에서 오류가 발생
결론 : HttpMessageConverter는 @ModelAttribute와 다르게 각각의 필드 단위로 적용되는 것이 아니라, 전체 객체 단위로 적용된다.
따라서 메시지 컨버터의 작동이 성공해서 객체를 만들어야 Valid, Validated 가 적용된다
'프레임워크 > 스프링' 카테고리의 다른 글
[Spring Boot] MariaDB, maven을 활용한 게시판 만들기 (3) (0) | 2022.03.15 |
---|---|
[Spring Boot] MariaDB, maven을 활용한 게시판 만들기 (2) (0) | 2022.03.15 |
[Spring Boot] MariaDB, maven을 활용한 게시판 만들기 (1) (0) | 2022.03.15 |
[스프링]Bean Validation (0) | 2022.02.22 |
[스프링] BindingResult (0) | 2022.02.21 |
댓글