Spring Controller단에서 Validation 어노테이션 활용하기

murkgom·2023년 2월 22일
0
@GetMapping("/test")
public void test(@Valid @Min(1) Integer intValue) {};

0. 현황

GET /test
오류 없이 200 리턴

TODO

intValue가 없거나 1 미만의 값이 들어올 경우, HttpStatusCode 400 리턴

Case1. @RequestParam

@GetMapping("/test")
public void test(@RequestParam @Min(1) Integer intValue) {};

=> NotNull은 validation 가능.
But, 최소값 체크는 되지 않음

Case 2. DTO 클래스

@Setter
public SampleDto {
	@Min(1)
    Integer intValue;
}

Case 3. @Validated

@Validated
@RestController
public class SampleController {
	...
}

class단에 @Validated 어노테이션 추가해주면 AOP 추가의 개념으로 Param들을 intercept, valid 체크가 진행됨
=> 1 미만의 값이 들어왔을 때 ContraintViolationException 발생

But, 서버 에러라 status 400을 리턴해주지 않는다.
=> @ExceptionHandler 등을 통해 400 리턴을 처리해줘야 함

개인 의견

시스템에 Exception 처리가 되어 있다면?
=> Case3 @Validated 활용
그렇지 않다면
=> Case2 Dto 클래스 활용

0개의 댓글