path 파라미터는 뷰클래스 함수에서 self와 request 외에 다른 인자를 가지게 되며 그 인자값이 엔드포인트가 됩니다. path 파라미터는 엔드포인트의 일부로서, 아래의 엔드포인트에서 {user}와 {cart_id}에 각각 그 값이 들어갑니다.
path 파라미터는 인자가 없으면 안되고 인자값으로 확실한 구분이 가능한 경우(특정 상품의 정보 등)에 주로 사용합니다
/service/user/{user}/carts/{cart_id}
path('user/<int:user_id>/product/<int:product_id>', views.CartView.as_view()),
이런식으로 각자의 형태에 맞게 그리고 이름을 다르게 해서 받은 뒤, views.py에 다음과 같이 선언하여 이용합니다. (url을 통해서 받은 값을 view의 변수에 넣을 수 있다는 것을 의미)
def get(self, request, user_id, cart_id):
엔드포인트에서 물음표("?") 뒤에 등장하는 query 파라미터는 다음과 같은 형식을 갖고 있습니다.
/surfreport?user=3&product=17
REST API의 모범을 준수하자면 query 파라미터는 정렬 혹은 필터링이 필요할 때, 검색과 같이 여러 개의 조건이 결합될 때 주로 사용합니다.
[views.py]
class CartView(View):
def get(self, request):
user = request.GET.get('user')
product = request.GET.get('product')
View 클래스에 위와 같이 설정하고 파라미터 key:value 값으로 user:4, product:2
httpie에서는 http -v url user=4 product=2로 입력하면
장고의 request.GET 에는 <QueryDict: {'user': ['4'], 'product': ['2']}>가 들어가게 되고 request 헤더에 엔드포인트 url로 /cart?user=4&product=2가 찍히게 됩니다.