당근개발자
당근당근
당근개발자
전체 방문자
오늘
어제
  • 분류 전체보기 (157)
    • codepresoo (13)
    • JAVA (1)
    • JS (12)
    • 코딩 테스트 (7)
    • Spring (21)
    • 자료구조 (4)
    • HTTP (7)
    • JSP (36)
    • Etc (21)
    • RESTful (11)
    • React (1)
    • k8s (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 이
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수강하고있는강의명
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online.
  • thymleaf error#template might not exist
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기
  • thymleaf#layout#fragment#thymleaf layout 적용안됌
  • stack#자료구조
  • @JsonFilter#당근개발자
  • dobule_linked_list#java
  • Primitive#Wrapper
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online
  • #코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • HATEAOD
  • S
  • queue#자료구조
  • 코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
당근개발자

당근당근

Validation
RESTful

Validation

2022. 1. 14. 18:28

 Validation은 유효성이라는 뜻으로,

 

Entity 객체에 @valid 를 부여함으로써, 예외를 발생 시킬수있다.

 

import lombok.AllArgsConstructor;
import lombok.Data;

import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import java.util.Date;

@Data
@AllArgsConstructor
public class User {
    private Integer id;

    @Size(min=2)
    private String name;

    private Date joinDate;
}

위에 @Size(min=2) 의 의미는 String name의 크기가 최소2가 넘어야 한다는 것이다.

만약 2가 넘기지 않을시 유효성에 위배된다.

 

@RestController
@ControllerAdvice // 모든 컨트롤러가 실행시, 이것이 실행됌
public class CustomizedResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(Exception.class)
    public final ResponseEntity<Object> handleAllException(Exception ex, WebRequest request){
        ExceptionResponse exceptionResponse =
                new ExceptionResponse(new Date(), ex.getMessage(), request.getDescription(false));
    return new ResponseEntity(exceptionResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }

    @ExceptionHandler(UserNotFoundException.class)
    public final ResponseEntity<Object> handleUserNotFoundException(Exception ex, WebRequest request){
        ExceptionResponse exceptionResponse =
                new ExceptionResponse(new Date(), ex.getMessage(), request.getDescription(false));
        return new ResponseEntity(exceptionResponse, HttpStatus.NOT_FOUND);
    }

    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(
            MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {

        ExceptionResponse exceptionResponse = new ExceptionResponse(new Date(),"Validation failed",
                ex.getBindingResult().toString());
        return new ResponseEntity(exceptionResponse,HttpStatus.BAD_REQUEST);
    }
}

다음은 개인적으로 만든 예외 클래스이다. 

ResponseEntityExceptionHandler에서  ResponseEntitiy를 오버라이드 하였다.

이 메서드를 사용하면, body부분에 내가 보내자고하는 에러 사항을 보낼수있다.

body에 보낼 객체는 바로 ExceptionResponnse 객체이다.

인자값으로 내가보낼 정보를 넣어주겠다.

그리고 최종적으로 ResponseEntit

y를 생성하고 인자값은로 response 객체와, status code를 보낸면

400에러와 함께 내가보낸, date, message, detail이 반환된다.

 

'RESTful' 카테고리의 다른 글

Rest API version 관리(URI)  (0) 2022.01.16
@JsonFilter  (0) 2022.01.16
@JsonIgnore (jackson)  (0) 2022.01.16
Internationalization 다국어처리  (0) 2022.01.15
Client 요청 예외처리하기(Status code)  (0) 2022.01.14
    'RESTful' 카테고리의 다른 글
    • @JsonFilter
    • @JsonIgnore (jackson)
    • Internationalization 다국어처리
    • Client 요청 예외처리하기(Status code)
    당근개발자
    당근개발자

    티스토리툴바