출처: https://elfinlas.github.io/2018/02/18/spring-parameter/
위 블로그의 내용을 제가 이해한 바에 맞게 쉽게 정리한 것입니다.
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를 많이 두니까 잘 안쓰겠지만...)
'학습 > Spring' 카테고리의 다른 글
[spring] 핵심2_Aspect Oriented Programming (0) | 2020.03.21 |
---|---|
[spring] 핵심1_Inversion Of Control / Bean / Dependency Injection (0) | 2020.03.21 |
[spring] DAO와 Repository / DTO / VO (0) | 2020.02.02 |
[java] Gradle(그레이들)이란? (0) | 2020.01.05 |
[java] Lombok이란? (0) | 2019.12.14 |
댓글