Django REST 프레임워크 소개 및 활용 방법

2023. 12. 8. 20:52개발 문서/Django

728x90
반응형

Django REST 프레임워크 소개 및 활용 방법

1. Django REST 프레임워크 소개

  • Django REST 프레임워크는 Django 기반의 웹 API를 빠르게 개발할 수 있도록 도와주는 강력한 도구이다.
  • RESTful API 디자인 원칙을 따르며, 시리얼라이저, 뷰, URL 라우팅 등을 제공하여 효율적인 API 개발이 가능하다.

2. RESTful API의 기본 구성 요소

  • 리소스(Resource): 데이터 또는 서비스에 대한 표현, URI로 식별된다.
  • HTTP 메서드: 리소스에 대한 행위를 정의하는 메서드 (GET, POST, PUT, DELETE 등).
  • 표현(Representation): 리소스의 상태를 나타내는 데이터 형식 (JSON, XML 등).

3. Django REST 프로젝트 설정

  • pip install djangorestframework로 Django REST 프레임워크를 설치한다.
  • INSTALLED_APPS'rest_framework'를 추가하여 프로젝트에 활성화한다.
# settings.py
INSTALLED_APPS = [
    # ...
    'rest_framework',
]

4. 시리얼라이저 사용하기

  • 시리얼라이저는 모델 인스턴스나 쿼리셋을 JSON 등의 형식으로 변환하고, 반대로 파싱하는 역할을 한다.
  • serializers.py 파일을 생성하여 시리얼라이저를 정의한다.
# serializers.py
from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'

5. API 뷰 작성하기

  • API 뷰는 HTTP 메서드에 따라 요청을 처리하고 응답하는 역할을 한다.
  • views.py 파일에서 API 뷰를 작성한다.
# views.py
from rest_framework import generics
from .models import Post
from .serializers import PostSerializer

class PostListCreateView(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

6. URL 라우팅 설정하기

  • URL 라우팅은 API 엔드포인트를 URL에 매핑하는 역할을 한다.
  • urls.py 파일에서 URL 패턴을 설정한다.
# urls.py
from django.urls import path
from .views import PostListCreateView

urlpatterns = [
    path('posts/', PostListCreateView.as_view(), name='post-list-create'),
    # 추가적인 URL 패턴들...
]

7. API 뷰에 권한과 인증 설정하기

  • Django REST 프레임워크는 다양한 권한과 인증 방식을 지원한다.
  • permission_classesauthentication_classes 속성을 사용하여 API 뷰에 적용한다.
# views.py
from rest_framework.permissions import IsAuthenticated
from rest_framework.authentication import TokenAuthentication

class PostListCreateView(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]

8. API 뷰에 필터링 및 정렬 추가하기

  • 필터링과 정렬을 추가하여 API 결과를 원하는 대로 제어할 수 있다.
  • filtersordering 속성을 사용하여 설정한다.
# views.py
from rest_framework import filters

class PostListCreateView(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    filter_backends = [filters.SearchFilter, filters.OrderingFilter]
    search_fields = ['title', 'content']
    ordering_fields = ['created_at', 'views']

9. API 뷰에 페이징 적용하기

  • 큰 데이터셋에 대한 응답을 관리하기 위해 페이징을 적용한다.
  • pagination_class 속성을 사용하여 페이징을 설정한다.
# views.py
from rest_framework.pagination import PageNumberPagination

class PostListCreateView(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    pagination_class = PageNumberPagination
    page_size = 10

10. 결론

Django REST 프레임워크를 사용하면 빠르고 간편하게 웹 API를 개발할 수 있다. 시리얼라이저, API 뷰, URL 라우팅을 통해 강력한 RESTful API를 만들고, 다양한 기능들을 활용하여 권한, 인증, 필터링, 정렬, 페이징과 같은 기능들을 쉽게 추가할 수 있다. Django REST 프레임워크를 활용하여 강력하면서도 유연한 API를 구축할 수 있도록 학습하면 개발 생산성을 향상시킬 수 있다.