11월 29일 수요일
AM 알고리즘 풀이
PM 과제 수행
valid와 validated의 차이
Valid는 주로 requestbody 검증 시에 사용된다.
@NotNull, @NotBlank, @email 등 여러가지 유효성을 검사할 수 있는 어노테이션이 존재한다.
public class UserRequest {
@Email
private String email;
@NotBlank
private String password;
@NotNull
private Address address;
// 생성자 및 getter 함수
}
@PostMapping()
public String signUp(@Valid @RequestBody UserRequest request) {
return "ok";
}
이와 같이 @RequestBody 앞에 @Valid를 선언해줘야 작동한다.
@RestController
@RequestMapping("/users")
@Validated
public class UserController {
.
.
@GetMapping("/{id}")
public String find(@PathVariable @Min(1) Long id) {
return "ok";
}
}
validated는 Controller 클래스 레벨에서 적용하고 API 안에서 위와 같이 적용하면 된다.
여기도 마찬가지로 @Validated를 선언하지 않으면 유효성 검사가 작동하지 않는다.
Valid로 유효성 검사를 할 시 MethodArgumentNotValidException 예외를 발생시키고 Exception Handler로 핸들링 할 수 있다.
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseMessage<String> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
return ResponseMessage.badRequest("");
}
Validated로 유효성 검사를 했다면 ConstraintViolationException 예외가 발생하고 아래와 같이 처리할 수 있다.
@ExceptionHandler(ConstraintViolationException.class)
public ResponseMessage<String> handleMethodConstraintViolationException(ConstraintViolationException e) {
return ResponseMessage.badRequest("");
}
과제가 끝났고 오랜만에 도전 과제 중 하나를 완성하여 제출했다. 다음에는 더 많이 해볼 수 있도록 노력해야겠다.