있을 유, 참 진

[SpringMVC] 업무에서 활용한 @RequestParam 사용법 정리 본문

Spring

[SpringMVC] 업무에서 활용한 @RequestParam 사용법 정리

U_ma 2023. 3. 30. 01:18
@RequestParam 기본 설명
   - 예시 설명
@RequestParam에서 같은 파라미터를 한 번에 보내는 방법
   - 하나의 쿼리 파라미터를 통해 보내기
   - 동일한 쿼리 파라미터 이름을 통해 보내기
enum을 통해 받아오는 파라미터 값 제한하기
   - enum값 설정

@RequestParam 기본 설명

💡 @RequestParam 어노테이션은 HTTP 요청 파라미터를 받아오는 어노테이션이다. URL의 파라미터를 추출해 메서드 인자로 받는다.
-  https://yuma1029.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F#

예시 설명

    @GetMapping
    public ResponseEntity<ProductResponseDto.NewProduct> getProducts(@RequestParam(name = "product-status", required = false) ProductStatus productStatus) {
        //...코드 생략
    }

@RequestParam(value = "name", required = false) 파라미터에 대한 요구 사항 설정 가능. value는 URL에 지정된 파라미터의 이름으로 지정할 수 있고, required를 통해서 파라미터의 필수 여부를 체크할 수 있다.

@RequestParam에서 같은 파라미터를 한 번에 보내는 방법

💡 @RequestParam을 활용해 똑같은 파라미터 이름을 가진 값을 여러 개를 보내주고 싶을 때 사용했던 두 가지 방법을 소개한다.

하나의 쿼리 파라미터를 통해 보내기

💡 쿼리 파라미터를 `,` 를 구분자로 해 사용한다.
@GetMapping("/boards")
public String testParam(@RequestParam("ids") List<Long> ids) {
    //...
}
GET https://localhost/boards?ids=1,2,3,4,5

동일한 쿼리 파라미터의 이름을 통해 보내기

💡 동일한 파라미터 명을 통해서 여러 중복값을 받아올 수 있다.
@GetMapping("/boards")
public String testParam(@RequestParam("id") List<Long> ids) {
    //...
}
GET https://localhost/boards?id=1&id=2&id=3&id=4&id=5

enum을 통해 받아오는 파라미터 값 제한하기

💡 @RequestParam 변수의 타입을 enum으로 설정해 파라미터가 받아오는 값을 제한할 수 있고 활용할 수 있다.

enum값 설정

@Slf4j
@Getter
@AllArgsConstructor
public enum ProductStatus {
    DUTYFREE(0), DELIVERY(1);
    
    //enum을 활용할 수 있는 필드, 메서드 작성
}
@GetMapping("/new-product")
public ResponseEntity<ProductResponseDto.NewProduct> getNewProducts(@RequestParam(name = "product-status", required = false) ProductStatus productStatus) {
    //... 생략
}

@RequestParam의 product-status 파라미터가 받아올 수 있는 값을 DUTYFREE, DELIVERY 두 개로 제한할 수 있다.

Comments