💡 유효성 검사가 필요한 이유
1. 컨트롤러 레이어에서 Request Body 검사를 함으로써 API 명세를 정확히 지킬 수 있음
2. 프론트엔드 개발자의 개발중 실수를 즉각적으로 알려줌
3. 비즈니스 로직상 올바르지 않은 형태의 데이터가 DB에 저장되는 것을 방지함
사용 방법
의존성 추가 (Spring Boot 3.0, Java 17)
dependencies {
// ...
implementation 'org.springframework.boot:spring-boot-starter-validation:3.0.5'
validation 종류
validation 종류 참고 : https://jeongkyun-it.tistory.com/130
개인적으로 주로 사용하는 어노테이션의 종류와 사용 팁은 다음과 같다.
@NotNull | 전역적으로 not nullable 제약 |
@NotBlank | 일반적인 1글자 이상 String 필드 |
@NotEmpty | List 필드 (Collection, Map 포함) |
@Size | String, List의 사이즈 제약 |
@Positive | id 값 (FK, PK) |
@Max, @Min | 최대값, 최소값 제약 |
@Pattern | regex 패턴 제약 |
이메일 regex 패턴 제약 |
사용 예시
컨트롤러 요청 DTO 옆에 @Valid 추가
요청 DTO 파라미터 부분에 validation 어노테이션 추가
더 보완할 점
현재 응답 메세지는 너무 불친절하다.
프론트엔드 개발자의 원활한 디버깅을 위해선 구체적인 필드명도 응답해줘야 한다고 생각한다.
.yml 혹은 .properties 파일 설정을 통해 커스터마이징할 수 있다고 한다.
'Back-end > Spring Boot' 카테고리의 다른 글
[Spring JPA] Hibernate에서 지원하지 않는 MySQL 랜덤 함수 직접 만들기 + Expressions 파헤쳐보기 (0) | 2023.09.06 |
---|---|
[Spring Boot] 개발 환경 분리와 ddl-auto 재앙 방지 + @Profile (0) | 2023.09.03 |
[Spring Boot] 연관관계 생성 메서드 삽질 (0) | 2023.08.23 |
[Spring JPA] 실시간으로 적재되는 데이터와 부모 엔티티 묶어서 가져오기 (0) | 2023.08.10 |
[Spring Boot] 스웨거 springdoc-openapi 적용 (webmvc-ui) (0) | 2023.08.09 |