@PathVariable, @RequestParam
by 개발하는지호@PathVariable, @RequestParam의 사용
이 번 주에 백앤드 시험에서 딱 하나 못 푼 문제가 있었따. 바로 @PathVairable, @RequestParam의 사용이었다.
REST API 에서 URI 규칙이 있는데, 특정 id로 정보를 가져오기 위해서는 @PathVariable를 이용해서 정보를 가져와야 한다.
하지만, 아이디 말고 특정 이름 등으로 가져오기 위해서는 쿼리문 작성을 해서 가져올 수 있게 해야하는데
이 때 @RequestParam을 이용하며, 코드를
이렇게 작성을 한 뒤, 쿼리문을 통해
?firstNAme=??&lastNAme=?? 이렇게 작성하여 리소스를 불러 올 수 있다.
그러면 의문이 들 수 있다. 왜? id같은 경우는 @PathVariable를 사용하며, @RequestParam과 구별지은 이유가 뭔가??
그래서 chat GPT를 참고 해 보았다.
<<CHAT GPT>>
1.
일반적으로 REST API를 설계할 때 리소스의 고유 식별자(ID) 같은 핵심 정보는 경로 변수(Path Variable)를 사용하여 표현하고, 선택적인 쿼리 파라미터(예: 검색, 필터, 정렬 등)는 요청 매개변수(RequestParam)로 사용하는 것이 일반적입니다. 이런 방식은 API의 가독성과 사용성을 높이며, 리소스에 대한 접근 방식을 명확하게 합니다.
Path Variable (경로 변수)
- 정의: URL의 일부로 자원을 직접 식별하는 데 사용됩니다. 경로 변수는 주로 리소스의 고유 식별자(ID)를 지정하는 데 사용됩니다.
- 사용 예: /users/{userId} 여기서 {userId}는 특정 사용자의 고유 식별자(ID)를 나타내는 경로 변수입니다.
- 목적: 리소스의 구체적인 위치를 지정하거나, 특정 리소스에 대한 작업을 수행할 때 사용됩니다.
Request Param (요청 매개변수)
- 정의: URL의 끝에 ? 뒤에 키-값 쌍으로 추가되는 선택적인 파라미터입니다. 주로 검색, 필터링, 정렬 등의 목적으로 사용됩니다.
- 사용 예: /users?name=JohnDoe 여기서 name=JohnDoe는 요청 매개변수를 사용하여 name이 JohnDoe인 사용자를 찾습니다.
- 목적: 리소스의 집합에서 특정 조건에 맞는 항목을 검색하거나 필터링하는 데 사용됩니다.
요약
- Path Variable 사용 사례: 리소스의 고유 식별자와 같이, API의 경로 부분에 직접 포함되어 리소스를 명확하게 식별할 필요가 있는 경우 사용합니다. 이는 리소스에 대한 접근이나 특정 리소스의 세부 사항을 요청하는 데 적합합니다.
- Request Param 사용 사례: 선택적인 쿼리, 필터, 페이지네이션, 정렬 조건과 같이, 리소스 집합에서 특정 데이터를 검색하거나 조회 조건을 제공할 때 사용합니다.
이러한 구분은 REST API를 더욱 명확하고 유연하게 설계할 수 있도록 도와줍니다.
2.
요청 매개변수(Request Params)를 사용하여 API 요청을 할 때, 주어진 조건(예: 필터, 검색 조건)에 맞는 모든 리소스를 가져오게 됩니다. 이는 특히 데이터를 조회할 때 유용하며, 클라이언트가 요구하는 특정 조건이나 범위의 데이터를 서버로부터 받아올 수 있도록 합니다.
예시
예를 들어, 사용자 정보를 관리하는 API가 있고, 특정 사용자 이름으로 사용자 정보를 검색하고자 할 때 요청 매개변수를 사용할 수 있습니다. 만약 /users?name=John과 같은 요청을 한다면, 이름이 'John'인 모든 사용자 정보를 반환하게 됩니다.
요청 매개변수의 사용 사례
- 필터링: 특정 기준에 따라 결과를 필터링할 때 사용합니다. 예: /products?category=books
- 검색: 사용자가 입력한 검색어에 해당하는 데이터를 조회할 때 사용합니다. 예: /search?query=rest+api
- 정렬: 결과를 특정 순서로 정렬해야 할 때 사용합니다. 예: /items?sort=price_asc
- 페이지네이션: 대량의 데이터 중 일부분만을 조회할 때 사용합니다. 예: /posts?page=2&limit=10
결과의 범위
요청 매개변수로 요청을 하면, 서버는 해당 조건을 만족하는 데이터를 모두 조회하여 반환합니다. 이 때, 서버 측에서 설정한 기본값이나 클라이언트에서 지정한 조건(예: 한 페이지당 결과 수)에 따라 반환되는 데이터의 양이 결정됩니다.
결론
요청 매개변수는 API를 통해 데이터를 유연하게 조회하고 조작할 수 있도록 하는 강력한 수단입니다. 클라이언트가 정의한 조건에 맞는 데이터를 효과적으로 필터링, 검색, 정렬, 그리고 페이지네이션 할 수 있게 함으로써, 사용자가 원하는 데이터를 보다 정확하고 효율적으로 가져올 수 있습니다.
즉, 정리하자면 @PathVariable은 특정 리소스로 경로를 설정해주는 역할을 하고, @RequestParam은 보다 유연하게 내가 찾고자 하는 정보를 모두 가져올 수 있게하는 넓은 의미인 셈이다.
'개발 지식, 스크립트 > Spring' 카테고리의 다른 글
Spring security (2) | 2024.03.24 |
---|---|
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. (4) | 2024.02.23 |
Spring/Spring Boot 의 등장과 프로젝트 생성 (1) | 2024.02.15 |
(Spring) AOP --정리 중 (3) | 2024.02.08 |
Mapping error(<context:component - scan base-pakage~/>) (0) | 2024.01.31 |
블로그의 정보
DevSecOps
개발하는지호