백엔드 개발을 하다보면 클라이언트로부터 전달받는 내용들을 가지고서 지지고 볶고 하고싶은 일들을 하기 시작한다.
그렇다면 이 전달받은 내용들이 매우 중요할텐데 ...
이 값들을 로직이 시작하기 전 미리 검증해주는 작업들을 값을 받아올때 (api, controller) 혹은 값을 저장할때 (엔티티 필드값 등) 에서 하고자 할때 사용할 수 있습니다.
그렇다면 각 특징이 무엇이고 어떻게 될까요 ?
- @NotNull : 반드시 값이 존재해야 한다. 즉 Null만 허용하지 않는다는 것입니다
- "", " " 는 허용- @NotEmpty : 반드시 값이 존재해야 한다. 길이, 크기가 0보다 커야한다. 즉 null, 빈값인 ""는 안된다는 것입니다.
- " " 는 허용함, 길이가 1이 넘으므로- @NotBlank : 반드시 값이 존재해야 한다. 공백문자를 제외한 길이가 0보다 커야한다. 즉 null, "", " " 모두 안됩니다.
위 내용을 어노테이션만 달아준다고 하여 바로 적용이 되는것은 아닙니다.
해당 클래스를 사용하는 곳에 @Valid를 아래와 같이 붙여줘야 동작합니다.
public class CarCreateRequest{
@NotBlank
private String name;
@NotEmpty
private Long price;
...
}
public class CarAPI {
...
@PostMapping
public ResponseEntity CreateCar(@RequestBody @Valid CarCreateRequrest request) {
return ...
}
...