오답노트
[Spring] Exception과 Validation 본문
Spring은 엔터프라이즈급 프레임워크이기 때문에 수많은 API가 있을 수 있다. 이에 따른 예외처리를 하기 위해 Spring에서는 전역으로 Exception을 발생시킬 수 있는데, 이를 이용하여 사용자 친화적인 Validation을 만들어 보자
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public ResponseEntity methodArgumentNotValidException(MethodArgumentNotValidException e, HttpServletRequest httpServletRequest){
List<Error> errorList = new ArrayList<>();
BindingResult bindingResult = e.getBindingResult();
bindingResult.getAllErrors().forEach(error -> {
FieldError field = (FieldError) error;
String fieldName = field.getField();
String message = field.getDefaultMessage();
String value = field.getRejectedValue().toString();
Error errorMsg = new Error();
errorMsg.setField(fieldName);
errorMsg.setInvalidValue(value);
errorMsg.setMsg(message);
errorList.add(errorMsg);
});
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setErrorList(errorList);
errorResponse.setMsg("");
errorResponse.setRequestUrl(httpServletRequest.getRequestURI());
errorResponse.setStatusCode(HttpStatus.BAD_REQUEST.toString());
errorResponse.setResultCode("FAIL");
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorResponse);
}
위 코드는 예외가 발생한 상황들을 List에 담고, 이를 포함한 인스턴스를 만들어 body에 응답하도록 했다.
이로써 사용자가 자신이 어떤 파라미터가 틀렸는지 정확하게 알 수 있다.

'Java > Spring' 카테고리의 다른 글
[Spring] Interceptor (0) | 2023.07.14 |
---|---|
[Spring] Filter (0) | 2023.07.14 |
[Spring] Exception (0) | 2023.07.14 |
[Spring] Validation (0) | 2023.07.13 |
[Spring] AOP (0) | 2023.07.13 |