Validation은 프로그래밍에 있어서 가장 필요한 부분이다. 특히 Java에서는 null값에 대해서 접근하려고 할 때 null pointer exception이 발생함으로써 이러한 부분을 방지하기 위해 미리 검증을 하는 과정을 Validation이라 한다.
[Validation과 관련된 Annotation]
@RestController // 해당 Class는 REST API를 처리하는 Controller
@RequestMapping("/api") // RequestMapping은 URI를 지정해주는 Annotation
public class ApiController {
@PostMapping("/user")
public Object user(@Valid @RequestBody Usere user, BindingResult bindingResult) {
// validation에 대한 결과가 bindingResult에 담기게 된다.
if (bindingResult.hasErrors()) {
StringBuilder sb = new StringBuilder();
bindingResult.getAllErrors().forEach(objectError -> {
FieldError field = (FieldError) objectError;
String message = objectError.getDefaultMessage();
// 에러가 발생한 필드와 message에 적힌 내용을 화면에 출력한다.
System.out.println(field.getField());
System.out.println(message);
sb.append("field: " + field.getField());
sb.append("message: " + message);
});
// 응답 body안에 메세지를 전송해준다.
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(sb.toString());
}
System.out.println(user);
return user;
}
}
@Getter
@Setter
@ToString
public class Usere {
private String name;
private int age;
// 이메일에 양식이 맞지 않을 경우 에러를 리턴
@Email
private String email;
// 정규식에 일치하지 않을 경우 에러를 리턴
@Pattern(regexp = "^\\d{2,3}", message = "핸드폰 번호의 양식과 맞지 않습니다. 01x-xxxx-xxxx")
private String phoneNumber;
}