개발하는지호

@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은 보다 유연하게 내가 찾고자 하는 정보를 모두 가져올 수 있게하는 넓은 의미인 셈이다.

 

블로그의 정보

DevSecOps

개발하는지호

활동하기