-
Spring MVC Controller - Header(@RequestHeader) Validation 처리Spring 2020. 5. 22. 17:18
Spring MVC Controller에서 헤더 영역의 필드 값을 체크하기 위한 Validation 방법에 대하여 간단히 알려 드리려고 합니다.
Controller 내에 다음과 같이 설정 해 주시면, 간단하게 Validation 처리가 가능합니다.
-
Common
-
컨트롤러상단에 @Validated 추가필요. ( import org.springframework.validation.annotation.Validated )
import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; @RestController @Validated public class SampleController { // To-do-something }
-
-
Header Validation.
-
필수 포함 여부는 required = true 또는 false 로 정의 (default : true)
-
String, Collection, Map 이며, 최소 size가 1 이상인 경우 : @Size(min=1) ( import javax.validation.constraints.Size; )
-
int, long, short 이며, 최소 값이 1 이상인 경우 : @Min(1) ( import. javax.validation.constraints.Min; )
-
Annotation관련 자세한 내용은 해당 링크 참조
( https://docs.oracle.com/javaee/7/api/javax/validation/constraints/package-summary.html )
@RequestMapping( value = "/header/{pathVariable}/validate", method = RequestMethod.POST) public CommonResponse headerValidate( @PathVariable @Min(1) Long pathVariable, @RequestHeader(value = "X-Header-String", required = false) @Size(min = 1) String headerString, @RequestHeader(value = "X-Header-Number", required = true) @Min(1) int headerInt) { return okResponse("OK"); }
-
Validation에 따른 Response 응답 포맷. ( 응답 포맷은 커스텀 하게 작성 되어 있는점 참고 바랍니다. )
-
숫자 검증 @Min(1) 일때 숫자 0 전달 시
{ "code": 400, "message": "headerValidate.headerInt: 반드시 1보다 같거나 커야 합니다.", "data": [ "sample.controller.SampleController value '0' 반드시 1보다 같거나 커야 합니다." ] }
-
숫자 검증 @Min(1) 일때 문자열 'a' 전달 시
{ "code": 400, "message": "OK", "data": "Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: \"a\"" }
-
문자열 검증 @Size(min = 1) 일때 빈 문자열("") 전달 시
{ "code": 400, "message": "headerValidate.headerString: 반드시 최소값 1과(와) 최대값 2147483647 사이의 크기이어야 합니다.", "data": [ "sample.controller.SampleController value '' 반드시 최소값 1과(와) 최대값 2147483647 사이의 크기이어야 합니다." ] }
-
-
#참조 : https://www.yawintutor.com/how-to-validate-request-header-in-spring-boot/
'Spring' 카테고리의 다른 글
Spring MVC Stack - Tomcat Thread Pool 성능 테스트 (0) 2023.06.09 Spring MVC Stack - WebFlux/WebClient Logging with Reactor Context + MDC (3) 2021.05.21 Spring MVC Stack - Logging With AOP + MDC (0) 2021.04.14 Spring/Java - ModelMapper 사용시 Source Object null 케이스 처리 방법 (0) 2020.02.13 -