Wecode - Project 2 (부트캠프)/세션

Project 2- 2일 차: [API]세션(1) Path parameter

JBS 12 2023. 9. 20. 11:42
 

Project 2 - 2일차 : [Restful API] 세션 (path부터 다시)**

앞으로는 restful api 엄격하게 add, create 가 들어가지 않게 리뷰해서 main branch에 들어가지 않게끔. main branch에는 엄격하게 지켜져야 함 호출할 때, 프론트가 json body에 담아서 가져가는게 아니라, 프

pm-developer-justdoit.tistory.com

 

Project 2- 2일 차: [API]세션(2) Query Parameter (정렬부터 다시)**

Query Parameter 1. query parameter란? url에서 특정한 조건을 주고 싶을 때 사용하는 매개변수 유형 같은 API를 호출한다고 해도, 서로 다른 조건으로 나열하는 것이 필요한 상황에 사용 URL 끝에 물음표(?)

pm-developer-justdoit.tistory.com

1. Path Parameter

1-1. path parameter란?

URL로는 고유한 자원(resource, data)을 지칭할 수 있습니다.

 

그러나 특정 자원을 가리키는 url 경로에 가변적인 부분이 있다면 어떻게 될까요?

http://naver.com/stocks/kakao 라는 주소는 직관적으로 kakao사의 주식 정보를 나타냄

 

이 상황에서 회사의 이름 부분다른 회사에 대한 정보를 요청할 때에는 언제든지 바뀔 수 있는 가변적인 자리

가리키는 특정 리소스가 변경될 수

 

즉, 변수로 지정해둘 수 있다

이 변수의 이름을 Path Parameter

 

 

 

백엔드 서버에서

http://naver.com/stocks/:companyName 

라우팅 할 수 

 

변수로 지정하더라도

‘특정 리소스를 가리키는' URI로서의 역할은 변하지 않습니다.

 

백엔드 서버 입장에서는 매개변수 이지만,

클라이언트가 API를 호출할 때에는 해당 매개변수를 실제 값으로 대체하여 호출

 

해당 변수는 유일한 값을 식별하는 역할

 

 

 

 

아래에서 제품 데이터를 목록으로 호출했을 때와,

Path parameter를 이용해 한 가지의 제품에 대한 데이터만을 호출했을 때의 차이점을 확인

 

 

 

 

제품 정보를 나타내지만,
서로 다른 정보를 요청하는 서로 다른 API

[제품의 '목록 데이터']

: products 라는 리소스에 접근. 제품의 전체 목록

[GET]

 

[제품의 '상세 데이터'] 

procuts/1 라는 1번 리소스에 접근. 1번 제품에 대한 정보만 

[GET]

 

 

 1-2. path parameter는 모든 메소드 사용

  • [GET] 메소드: 데이터 정보 가져올 때 
  • [POST] 메소드: 데이터 저장할 때 사용하므로 특정한 변수가 없어도 됨. 즉 path parameter가 사용되지 않을 수도 있음. 
  • [PATCH] 메소드: 특정 리소스를 지칭하여 ‘수정할 것'을 표현하므로 path parameter로 어떤 데이터를 수정할 지 

부분 업데이트는 Patch 

전체 업데이트는 put

  • [DELETE] 메소드: 특정한 리소스를 지칭하여 ‘어떤 제품을 삭제할 지’ 를 명확히 가리킬 수

1-3. 실제 사용 예시

네이버 지도에서는 각 장소마다 상세한 정보를 제공

장소마다 고유한 URI 부여하고, 특정 자원에 접근할 수 있도록 

 

https://map.naver.com/v5/entry/place/:placeId

이와 같이 서로 다른 데이터지만 resource(자원)의 종류는 동일할 때,

path parameter를 이용하여 RESTful한 API를 구성할 수