백엔드에서 유효성 검사를 위해 @Valid를 사용해서 진행 중이었는데
api 요청을 보내니 아래와 같은 에러가 발생했다.
Request processing failed: jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'jakarta.validation.constraints.NotBlank' validating type 'com.park.restapi.domain.api.entity.MethodType'. Check configuration for 'methodType' at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1022) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
우선 Valid에서 많이 쓰는 어노테이션에 대해 잠깐만 짚고 넘어가자.
1.NotBlank
null, "", " " 허용하지 않음
2. NotEmpty
null, "" 허용하지 않음
3. NotNull
null 허용하지 않음.
문제가 됐던 코드는 아래 부분이다.
@NotBlank(message = "쿠폰 발급 여부를 선택해주세요.")
private Boolean isDailyCouponGenerate;
@NotBlank(message = "쿠폰 발급 갯수를 입력해주세요.")
@Min(value = 1, message = "쿠폰 발급 갯수는 1개 이상으로 입력해주세요.")
@Max(value = 100, message = "쿠폰 발급 갯수는 100개 이하로 입력해주세요.")
private Integer dailyCouponQuantity;
Boolean, Integer 타입인데 @NotBlank를 써서 문제가 발생했던 것. 두 타입은 "", " "를 못 받는 타입이기에 NotNull로 유효성검사를 진행해야 했다.
상황에 적재적소에 쓰지 못하고 무조건 NotBlank만 썼었는데 이제 조심해서 써야겠다.
반응형
'프로젝트 > RESTAPI 추천 서비스' 카테고리의 다른 글
웹소켓을 사용해서 간단하게 전체 채팅을 구현하자(1) (0) | 2024.04.11 |
---|---|
어김없이 또 발생한 N+1 문제(요청 기록 조회 API) (0) | 2024.04.09 |
MySQL 버퍼 풀 사이즈 조정으로 count 쿼리 성능 개선(37초 -> 0.026초) (1) | 2024.04.08 |
50만개 데이터를 어떻게 페이징을 해볼까 (2) | 2024.04.07 |