Java/Spring
[Spring] Exception과 Validation
권멋져
2023. 7. 14. 10:45
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에 응답하도록 했다.
이로써 사용자가 자신이 어떤 파라미터가 틀렸는지 정확하게 알 수 있다.