우리가 API 설계할때(URL 설정할때), Django에서는 1개의 View에 대해 1개의 url만 설정할수 있다. 그러면 쇼핑몰 홈페이지에서 볼 수 있는 제품 페이지들은 일일이 View를 만들어서 URL을 설정하는걸까?
이에 대한 해결방안으로 query / path parameter가 있다.
페이지마다 식별된 파라미터를 주기 위해서 엔드포인트에 다음과 같이 표현하여 서버에 데이터를 요청할 수 있다.
/users?id=123 # 아이디가 123인 사용자를 가져온다.
user_id = request.GET.get('id',None)
# user_id에 'id'의 value 값인 123값을 assign하고 'id' key값이 없을 경우 None을 assign한다.
와 같이 서버에서는 get 파라미터를 사용하여 요청된 id값을 가져온다.
/users?age=28&height=183&home=wonju
이처럼 여러 키값을 한번에 가져올 수 있다. 이럴때는 key값 사이마다 특수문자로 구분시켜준다.
또 다른 방법으로는,
/users/123
와 같이 '/' 로 경로를 구분해 123 이란값을 서버에 전달하게 된다.
서버에서는 이러한 형식의 요청들을 받기 위해,
/users/<int:user_id>
와 같은 형식으로 URL을 받도록 설정해놓으면, user_id마다 각각 페이지를 따로 응답할수 있게된다.
그리고, 서버에서 저러한 path parameter를 처리하기 위해서는,
def get(self,request,user_id)
user = User.objects.get(id=user_id)
#self, request 외에 별도의 인자를 가지게 되고, 그 인자값이 엔드포인트가 된다.
와 같은 형식으로 id값을 가져오게된다.
특정 resource를 식별하고 싶다. 👉 Path paramter
정렬이나 필터링을 해아한다. 👉 Query Parameter