Django REST Framework를 사용하여 Django에서 RESTful API 만들기
Django REST Framework(DRF)는 웹 API를 구축하기 위한 강력하고 유연한 툴킷입니다. RESTful API를 만드는 과정을 간소화하고, 시리얼라이저, 뷰셋, 인증 메커니즘과 같은 기능을 바로 제공합니다.
Django REST 프레임워크 설정
RESTful API를 만들기 전에 Django REST Framework를 설치하고 프로젝트에 추가해야 합니다. 다음 명령을 실행하여 DRF를 설치합니다.
pip install djangorestframework
그런 다음 settings.py
파일의 INSTALLED_APPS
에 'rest_framework'을 추가합니다.
INSTALLED_APPS = [
...,
'rest_framework',
]
간단한 API 만들기
Book
라는 간단한 모델에 대한 API를 만들어 보겠습니다. 첫 번째 단계는 models.py
에서 모델을 정의하는 것입니다.
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
published_date = models.DateField()
isbn = models.CharField(max_length=13)
def __str__(self):
return self.title
모델을 정의한 후 마이그레이션을 실행하여 데이터베이스 테이블을 생성합니다.
python manage.py makemigrations
python manage.py migrate
직렬화기 만들기
DRF의 직렬화기는 Django 모델과 같은 복잡한 데이터 유형을 JSON으로 변환합니다. Book
모델에 대한 직렬화기를 만듭니다.
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
뷰 및 URL 구축
DRF는 API 뷰를 만드는 두 가지 주요 방법을 제공합니다. 함수 기반 뷰와 클래스 기반 뷰입니다. 여기서는 APIView
를 사용하여 클래스 기반 뷰를 사용합니다.
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Book
from .serializers import BookSerializer
class BookListCreateAPIView(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
다음으로, urls.py
에서 이 뷰에 대한 URL을 구성합니다.
from django.urls import path
from .views import BookListCreateAPIView
urlpatterns = [
path('books/', BookListCreateAPIView.as_view(), name='book-list-create'),
]
API 테스트
서버가 실행 중이면 Postman이나 curl과 같은 도구를 사용하여 http://127.0.0.1:8000/books/
에서 API를 테스트할 수 있습니다. GET 요청은 모든 책을 검색하고 POST 요청은 새 책을 만들 수 있게 해줍니다.
ViewSets를 사용하여 API 향상
더 간결하고 재사용 가능한 코드를 위해 DRF의 ViewSet
및 Router
을 사용할 수 있습니다. API를 업데이트하여 ModelViewSet
을 사용하는 방법은 다음과 같습니다.
from rest_framework.viewsets import ModelViewSet
from .models import Book
from .serializers import BookSerializer
class BookViewSet(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
그런 다음 urls.py
에서 라우터를 구성합니다.
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')
urlpatterns = router.urls
결론
Django REST Framework를 사용하면 강력하고 유연한 RESTful API를 쉽게 만들 수 있습니다. 직렬화기, 뷰 및 라우터를 사용하면 복잡한 데이터 모델을 쉽게 처리하는 API를 빌드할 수 있습니다. 이 기반을 통해 이제 DRF에서 사용자 지정 권한, 페이지 매김 및 인증과 같은 고급 기능을 탐색할 수 있습니다.