Spring Boot Validation

둥냥둥냥둥·2023년 7월 8일
0
post-thumbnail

01. Spring Validation 이란?

클라이언트에서 서버로 값을 전달하고자 할 때

  • @RequestBody
  • @RequestParam
  • @PathVariable

전달되는 데이터에 대해 유효성 검증을 수행하며 MethodArgumentNotValidException을 발생하도록 처리하는 기능을 수행하는 라이브러리다.

1-1. @RequestBody

  • 클라이언트에서 서버로 JSON 형태로 전송하는 데이터를 VO의 ‘자바 객체’ 형태로 자동으로 값을 매칭시켜서 받기 위해 사용되는 어노테이션.
[참고] @Valid + @RequestBody를 함께 사용하여서 클라이언트에서 json 형태로 전송하는 데이터에 대해서 유효성 검증을 거쳐서 통과 시 로직을 수행하고 실패 시 에러를 도출합니다.
import org.springframework.web.bind.annotation.RequestBody;

 // [API] 코드 추가
 // @return ApiResponseWrapper<List < TemplateVO>> : 응답 결과 및 응답 코드 반환
 
@PostMapping("/insertCode")
@Operation(summary = "코드 추가", description = "코드를 추가하는데 사용하는 API입니다.")
public ResponseEntity<ApiResponse<Integer>> insertCode(@RequestBody @Valid CodeVO codeVO) {
    
    Integer result = codeService.insertCode(codeVO);
    ApiResponse<Integer> ar = new ApiResponse<>(result, SuccessCode.INSERT.getStatus(), SuccessCode.INSERT.getMessage());
    
    return new ResponseEntity<>(ar, HttpStatus.OK);
}

1.2. @RequestParam

💡 클라이언트에서 서버로 Query-String 형태로 데이터를 전송할때 이를 받기 위해 사용되는 어노테이션.
ex) Client Request -> http://localhost:8080/userId=adjh54&userNm=lee

@GetMapping("/")
public ResponseEntity<ApiResponse<CodeVO> selectTemplate(@Valid @RequestParam @Size(min = 1, max = 10) String grpCd) {
}

1.3. @PathVariable

클라이언트에서 서버로 Rest 형태로 전송되는 데이터를 받기 위해 사용되는 어노테이션.
ex) Client Request -> http://localhost:8080/{userId}/userName

@GetMapping("/{userId}/{userNm}")
public ResponseEntity<ApiResponse<CodeVO>> selectTemplate(@Valid @PathVariable @Size(min = 1, max = 10) String userId, @Valid @Size(min = 1, max = 10) @PathVariable("userNm") String userNm) {
}

02. @Valid vs @Validated 차이점

  • 두 어노테이션의 차이는 @Validated는 @Valid의 어노테이션의 기능을 모두 포함하고 있으며 추가로 유효성 검토를 할 수 있는 그룹을 지정 할 수 있다.
  • 그룹의 의미는 VO내에서 원하는 유효성 그룹으로 묶어서 사용 하는것을 의미.
분류@Valid@Validated
용도클라이언트로 부터 RequestBody 형태(객체)로 넘어오는 데이터에 대해 유효성 검증을 위해 사용됩니다클라이언트로 부터 RequestBody 형태(객체)로 넘어오는 데이터에 대해 유효성 검증을 위해 사용됩니다.
제공 라이브러리Java에서 제공Spring Framework에서 제공
import 구조import javax.validation.Valid;import org.springframework.validation.annotation.Validated;
유효성 검증 실패 시MethodArgumentNotValidException 에러가 발생합니다MethodArgumentNotValidException 에러가 발생합니다.
유효성 그룹 지정기능없음있음

03. Validation 관련 어노테이션

Annotation기능-
@Size문자 길이 측정Int Type 불가
@NotNullnull 불가-
@NotEmptynull, “” 불가-
@NotBlanknull , “” , “ “ 불가-
@Pattern정규식 적용-
@Max최대값-
@Min최소값-
@AssertTrue / False별도 Logic 적용-
@Valid해당 object validation 실행-
@Past과거 날짜-
@PastOrPresent오늘이거나 과거 날짜-
@Future미래 날짜-
@FutureOrPresent오늘이거나 미래 날짜-
profile
Java 먹자

0개의 댓글