[T.I.L]query parameter & path parameter

재운·2021년 4월 18일
0
post-thumbnail
post-custom-banner

우리가 API 설계할때(URL 설정할때), Django에서는 1개의 View에 대해 1개의 url만 설정할수 있다. 그러면 쇼핑몰 홈페이지에서 볼 수 있는 제품 페이지들은 일일이 View를 만들어서 URL을 설정하는걸까?
이에 대한 해결방안으로 query / path parameter가 있다.

Query Parameter

페이지마다 식별된 파라미터를 주기 위해서 엔드포인트에 다음과 같이 표현하여 서버에 데이터를 요청할 수 있다.

/users?id=123  # 아이디가 123인 사용자를 가져온다.
  • /users 까지는 url 경로에 설정해놓은 값이고, '?'이후값부터 query string으로 인식한다.
  • id=123이면, key값이 'id'이고 value값이 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값 사이마다 특수문자로 구분시켜준다.

Path parameter

또 다른 방법으로는,

/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값을 가져오게된다.

Parameter별 사용하는 상황

특정 resource를 식별하고 싶다. 👉 Path paramter
정렬이나 필터링을 해아한다. 👉 Query Parameter

profile
Life is memory
post-custom-banner

0개의 댓글