Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파이썬리스트컴프리헨션
- clone-coding
- 인터넷 네트워크
- **kwargs
- Python
- 백준
- wecode
- 코딩테스트파이썬
- CSS
- JavaScript
- promise
- docker
- 리스트컴프리헨션
- clone coding
- 인증인가
- 자료구조
- 알고리즘
- 자바스크립트
- 파이썬입출력
- bcrypt
- decorator
- 파이썬
- *args
- QuerySet
- django
- 파이썬문법
- DP
- RESTfulAPI
- 윈도우우분투듀얼부팅
- 해시충돌
Archives
- Today
- Total
개발기록장
[Django] Path parameter와 Query parameter 본문
RestfulAPI 설계에 유용한 Path parameter와 Query parameter를 Django에서 사용하는 방법
1. Path parameter
Path parameter는 api url에 지정된 데이터 타입의 변수를 넘겨주고 해당 url를 처리하는 View에서 이 변수를 받아서 활용할 수 있다.
- urls.py 예시
from django.urls import path
from product.views import ProductDetailView
urlpatterns = [
path('/product/<int:product_id>', ProductDetailView.as_view()),
]
url에서 int 타입의 product_id를 받아서 이를 처리할 ProductDetailView로 넘겨준다.
- views.py 예시
from django.views import View
from .models import Product
class ProductDetailView(View):
def get(self, request, product_id):
...(생략)...
product = Product.objects.get(id=product_id)
get 메소드의 파라미터로 product_id를 받는다.
2. Query parameter
Django에서는 HTTP request의 request.GET 객체로 query parameter를 받을 수 있다.
- query parameter 엔드포인트 예시
GET /product?category=drink&sort=-price
이렇게 http request을 보내면
django에서는 {'category' : 'drink', 'sort': '-price'}로 query dictionary 를 받는다.
- 프론트엔드에서 api를 호출할 때 (React ver)
fetch(`http://localhost:8000/product?category=${category}`, {
method: 'GET',
...(생략)...
})
- urls.py 예시
from django.urls import path
from product.views import ProductListView
urlpatterns = [
path('/product', ProductListView.as_view()),
]
- views.py 예시
from django.views import View
from .models import Category, Product
class ProductListView(View):
def get(self, request):
category_name = request.GET.get('category', None)
...(생략)...
category = Category.objects.get(name=category_name)
3. Path parameter와 Query parameter의 적절한 사용은?
Path parameter나 Query parameter 모두 uri로 파라이터를 준다는 것은 동일하다.
그렇다면 언제 어떤 방법을 사용하는게 적절할까?
Query parameter 방식은 이름에서도 알 수 있듯이 주로 filterign, sorting, searching에 사용하는게 적합하다.
정답이 있는 것은 아니지만, restful하게 설계한다면 용도에 맞게 쓰는 것이 좋다.
'TIL > Django' 카테고리의 다른 글
[Django] Q객체를 이용한 ORM 조건절 (2) | 2021.02.28 |
---|---|
[Django] 인스타그램 클론 코딩(7) - 대댓글 기능 구현 (0) | 2021.02.10 |
[Django] 인스타그램 클론 코딩(6) - 팔로우(follow) 기능 구현 (0) | 2021.02.10 |
[Django] 인스타그램 클론 코딩(5) - 좋아요(Like) 기능 구현 (0) | 2021.02.09 |
[Django] 인스타그램 클론 코딩(4) - 게시물과 댓글 C.R.U.D (RESTful API) (0) | 2021.02.09 |