3월 13, 2022

Path Variable VS Query Parameter

Path Variable 

경로를 변수로써 사용합니다.

포스트맨에서는 이런식으로 path parameter에 해당하는 변수(:id)를 정의하고, params에서 값을 줄 수 있습니다




여러개의 path parameter가 올 수 있습니다. 




어떠한 resource를 식별하고 싶으면 Path Variable을 사용합니다.

이유는 다음과 같습니다. 위의 예시의 경우, 존재하지 않는 boards의 id가 들어온다면 path variable은 404 not found 에러를 발생시킬 것입니다. 

/drinks [GET] # Fetch a list of drinks
/drinks [POST] # Create new drink
/drinks/123 [PUT] # Update drink id 123
/drinks/123 [DELETE] # remove drink id 123


리소스를 식별한 이후, HTTP 메소드를 변경함으로써 추가적인 endpoint (drinks/create) 나 쿼리 파라미터(drink?action=create) 없이 원하는 동작을 수행할 수 있습니다.

반면 Query Parameter를 사용한다면, 서버로 데이터가 넘어가 쿼리를 날린 이후, 해당하는 데이터가 없을 경우에 에러가 발생할 것입니다




Query Parameter

경로 "뒤에" 입력 데이터를 함께 제공하는 형태입니다. 

따라서 경로의 일부가 아니고, resource를 호출할때 받는 추가적인 정보에 해당합니다


Key,value의 쌍으로 이루어집니다, &로 연결 가능합니다


? 뒤에 오는 모든 것은 쿼리 파라미터입니다.

 
Optional 하기에 없더라도 문제가 되지 않습니다.



정렬이나 필터링을 할 시 Query Parameter를 사용합니다 

앞서 Path Variable의 경우와 달리, 정렬이나 필터링을 할시 404 not found가 발생하는 상황은 부적절합니다. 따라서 이러한 경우엔 Query Param을 사용해줍니다.



사진에서 보이듯이 query params는 체크박스 해제가 가능하지만, path Variable은 체크 해제가 불가능합니다. 이는 path parameter가 없을 시 path가 달라지기 때문입니다(경로의 일부분이기에)