스프링 부트 Request 데이터 validation
2019. 9. 9. 01:33ㆍ[정리] 기능별 개념 정리/스프링 부트
출처 : https://www.youtube.com/watch?v=Ul-1lfjRCiE
Request 시 데이터를 받는 방법 | @Validated 지원 | @Valid 지원 |
@RequestParam | O | X |
@RequestHeader | O | X |
@CookieValue | O | X |
@RequestVariable | O | X |
@ModelAttribute | O | O |
@RequestBody | O | O |
@RequestPart | O | O |
Validated 로 Request 데이터 검증하기
@Validated 로 검증 애노테이션인 @NotEmpty 와 @Min 을 사용하겠다는 선언을 해줘야한다.
@RestController
@Validated
public class MyController {
@GetMapping("/user")
public User printUser(@NotEmpty String name, @Min(0) int age) {
System.out.println(name);
System.out.println(age);
return "print!";
}
@ExcptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Map validationExceptionHandler(ConstraintViolationException e){
List<String> errors = e.getConstarintViolations()
.stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.toList());
return Collections.singletonMap("errors", errors);
}
}
Valid + Validated 로 Request 데이터 검증하기
@RestController
public class MyController {
@GetMapping("/user")
public String printUser(@Valid @ModelAttribute UserRequest userRequest) {
System.out.println(userRequest.getName());
System.out.println(userRequest.getAge());
return "print!";
}
@ExcptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Map validationExceptionHandler(ConstraintViolationException e){
List<String> errors = e.getConstarintViolations()
.stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.toList());
return Collections.singletonMap("errors", errors);
}
}
@Data
public class UserRequest {
@NotEmptiy
public String name;
@Min(0)
public int age;
}
Valid + Validated 에서 다른 방식의 에러 핸들링
@RestController
public class MyController {
@GetMapping("/user")
public ResponseEntity printUser(@Valid @ModelAttribute UserRequest userRequest, BindingResult error) {
if(error.hasErrors()){
return ResponseEntity.badRequest().build();
}
System.out.println(userRequest.getName());
System.out.println(userRequest.getAge());
return ResponseEntity.ok("print!");
}
}
'[정리] 기능별 개념 정리 > 스프링 부트' 카테고리의 다른 글
Ehcache (0) | 2019.06.04 |
---|---|
필터, 인터셉터, AOP (0) | 2019.05.28 |
스프링 부트 Cache (0) | 2019.05.27 |
PSA (추상화 계층) (0) | 2019.05.01 |
스프링 부트의 Mock (0) | 2019.04.28 |