본문 바로가기
학습/Spring

[spring] @RequestParam과 @PathVariable

by KKambi 2020. 2. 15.

출처: https://elfinlas.github.io/2018/02/18/spring-parameter/

 

Spring에서 @RequestParam과 @PathVariable

Spring에서 Controller의 전달인자…Spring을 사용하다 보면 Controller 단에서 클라이언트에서 URL에 파라메터를 같이 전달하는 경우가 있습니다.주로 사용하는 형태는 아래의 두 가지가 대표적인 케이스입니다. Type 1 => http://127.0.0.1?index=1&page=2Type 2 => http://127

elfinlas.github.io

위 블로그의 내용을 제가 이해한 바에 맞게 쉽게 정리한 것입니다.


URL에 게시물의 id와 같은 파라미터를 전달하기 위한 방법은 2가지

1. 쿼리스트링

- http://localhost:8080/posts?page=1&id=1

- GET 방식으로 조회에 주로 사용된다.

 

2. API호출

- http://localhost:8080/api/v1/posts/1/1

- API의 경우, URL은 동일하지만, method(GET / POST / PUT / DELETE)에 따라 다른 행위를 실행한다.

 

 

 

Spring의 @RequestParam

- 1번 쿼리스트링의 파라미터를 가져오는 데 사용된다.

- 이미 URL을 호출할 때 파라미터 이름이 정해져있는 상태 (page / id)

- @RequestParam(파라미터명 자료형 변수명)

- Controller단에서 다음과 같이 사용한다.

1
2
3
4
@GetMapping("/posts")
public PostsReponseDto findById(@RequestParam("id") Long id, @RequestParam("page")){
    return PostsService.find(id, page);
}
 
 

 

 

 

Spring의 @PathVariable

- 2번 API호출 URL의 경우에서 사용한다.

- URL을 호출할 때 파라미터 이름이 정해져있지 않은 상태

- Mapping 어노테이션에서 지정한 파라미터 이름을 그대로 사용한다.

- Controller단에서 다음과 같이 사용한다.

1
2
3
4
@GetMapping("api/v1/posts/{page}/{id}")
public PostsReponseDto findById(@PathVariable Long id, @PathVariable Long page){
    return PostsService.findById(id, page);
}
 

 

 

오해하지 말

1. 둘 중 하나의 어노테이션만 사용하는 것이 아님

2. 두 어노테이션을 함께 사용할 수도 있다. (요즘엔 API를 많이 두니까 잘 안쓰겠지만...)

 

댓글