일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- NamingRule
- tcp
- SnakeCase
- udp
- 카멜케이스
- DatagramSocket
- DatagramPacket
- 스네이크케이스
- PascalCase
- Java
- 명명규칙
- 파스칼케이스
- Socket
- camelcase
- 케밥케이스
- KebabCase
- ServerSocket
- UDP통신
- Today
- Total
MATT's
Spring Validation 본문
웹 환경에서 올바르지 않은 데이터를 걸러내는 데이터 검증 (validation) 작업은 Client / Server 계층 모두에게 필요하다.
간혹, Server로 요청하기 전에 Client 계층에서만 데이터를 검증하면 Server에서는 검증할 필요가 없지 않냐고 하는 사람 들도 있는데,
Client 계층은 Server 계층에 비해 데이터 조작이 쉽기 때문에 Server 계층의 validation은 반드시 필요하다.
# Bean Validation
Server 계층에서의 Validation을 위해 Java에서는 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공한다.
Bean Validation이란 어노테이션을 통해 다양한 데이터를 검증할 수 있게 제공되는 기능이다.
Spring boot에서는 유효성 검사 표준으로 Hibernate Validator라는 Bean Validation 명세에 대한 구현체를 채택하여 사용하고 있다.
# 사용법
Spring boot 2.3 이전 버전에는 starter-web에 validation이 포함되어 있었지만, 2.3 버전 부터는 빠져있기 때문에 해당 라이브러리를 추가해서 사용해야한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
Validation을 적용할 Dto 클래스에 Validation 관련 어노테이션을 추가한다.
@Getter @Setter
public class UserDto {
@NotBlank
private String userId;
@NotBlank
private String userName;
@Email
private String email;
private String address;
}
해당 Dto 클래스를 인자(파라미터)로 전달 받는 Controller 메소드에 @Valid 어노테이션을 아래와 같이 추가한다.
@RequestMapping(value = "/user", method = RequestMethod.POST)
public ResponseEntity<User> saveUser(@RequestBody @Valid UserDto userDto) {
userService.saveUser(userDto);
return ResponseEntity.ok().build();
}
이렇게 코드를 작성한 후에 해당 메소드로 잘못된 데이터를 전달하게 되면 아래와 같이 MethodArgumentNotValidException이 발생되게 된다.
# Validation 관련 어노테이션
@Size : 문자의 길이 조건
@NotNull : null 값 불가
@NotEmpty : null 값 불가 + ""값 불가
@NotBlank : null 값 불가 + ""값 불가 + " "값 불가
@Past : 과거 날짜
@PastOrPresent : 과거 날짜 + 오늘 날짜
@Future : 미래 날짜
@FutureOrPresent : 미래 날짜 + 오늘 날짜
@Pattern : 정규식을 사용한 조건
@Max : 최대값 조건
@Min : 최소값 조건
@AssertTrue / AssertFalse : 참/거짓 조건 설정
@Valid : 해당 객체의 유효성 검사 (Java 제공)
@Validated : 해당 객체의 유효성 검사(Spring 제공)
'Web Programming' 카테고리의 다른 글
[Postman] API 문서 만들기 (0) | 2022.03.09 |
---|---|
[Netlify] 무료 Https 호스팅 (0) | 2022.01.17 |
RESTful API (0) | 2021.10.11 |