클라이언트에서 POST 메소드를 사용하지 않고 GET 메소드를 사용해서 원하는 데이터만을 가져오고 싶은 경우가 있다. 이럴 때 두 가지 방법이 있는데 하나는 Path parameter이고 다른 하나는 Query Parameter이다. 이번 포스팅에서는 Path parameter에 대해서 알아보려고한다.
백엔드에 데이터 요청시 url에 데이터를 작성하여 원하는 데이터를 가져오는 방법이다.
http://localhost:8000/users/**3**
from django.urls import path
from .views import ProductDetailView
urlpatterns = [
...
path('/product/<int:product_id>', ProductDetailView.as_view()),
]
class ProductDetailView(View):
def get(self, request, product_id):
if not Product.objects.filter(id=product_id).exists():
return JsonResponse({'message': 'PRODUCT_DOES_NOT_EXIST'}, status=404)
product = Product.objects.get(id=product_id)
get 함수에서 인자를 self, request, product_id 3개를 받고 있다. product_id는 urls에서 선언한 변수로 클라이언트에서 작성한 값이다. 그러면 product_id를 변수로 사용해서 filter(id=product_id)처럼 사용할 수 있다. 위 예시는 클라이언트로부터 product_id를 받아서 그것에 해당되는 객체가 Product 테이블에 있는지 exists() 함수를 사용해서 확인한 것이다.