[파이썬] Django REST 프레임워크를 이용한 API 버전 관리

API 버전 관리는 소프트웨어의 진화와 변경에 따라 API를 업그레이드하고 사용자와의 호환성을 유지하는 데 중요한 역할을 합니다. Django REST 프레임워크(DRF)는 이러한 API 버전 관리를 쉽게 처리할 수 있는 강력한 도구를 제공합니다. 이번 블로그 포스트에서는 DRF의 API 버전 관리 기능을 소개하고, 간단한 예제를 통해 실제 구현 방법을 알아보겠습니다.

DRF의 API 버전 관리 기능

DRF는 API 버전 관리를 위한 다양한 기능을 제공합니다. 주요 기능은 다음과 같습니다:

API 버전 관리 예제

간단한 예제를 통해 DRF의 API 버전 관리를 적용하는 방법을 알아보겠습니다. 예제는 books와 관련된 API를 버전별로 관리하는 상황입니다.

1. URL 접두사(prefix) 설정

# urls.py

from django.urls import include, path
from rest_framework.routers import DefaultRouter

from .views import BookViewSet

router_v1 = DefaultRouter()
router_v1.register(r'books', BookViewSet)

router_v2 = DefaultRouter()
router_v2.register(r'books', BookViewSet)

urlpatterns = [
    path('v1/', include(router_v1.urls)),
    path('v2/', include(router_v2.urls)),
]

위의 예제에서는 /v1/books//v2/books/로 각각 버전별로 다른 접두사를 설정하였습니다.

2. 시리얼라이저 버전 관리

# serializers.py

from rest_framework import serializers
from .models import Book

class BookSerializerV1(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['title', 'author']

class BookSerializerV2(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['title', 'author', 'publication_date']

위의 예제에서는 BookSerializerV1BookSerializerV2라는 버전별로 다른 시리얼라이저 클래스를 정의하였습니다.

3. 서비스 로직 분리

# views.py

from rest_framework import viewsets
from .models import Book

class BookViewSetV1(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializerV1

class BookViewSetV2(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializerV2

위의 예제에서는 BookViewSetV1BookViewSetV2라는 버전별로 다른 서비스 로직을 구성하였습니다.

4. URL 패턴 그룹화

# urls.py

from django.urls import include, path
from rest_framework.routers import DefaultRouter

from .views import BookViewSetV1, BookViewSetV2

router = DefaultRouter()
router.register(r'books/v1', BookViewSetV1)
router.register(r'books/v2', BookViewSetV2)

urlpatterns = [
    path('', include(router.urls)),
]

위의 예제에서는 /books/v1//books/v2/로 각각 버전별로 다른 URL 패턴을 그룹화하였습니다.

이제 위의 예제를 참고하여 DRF를 이용한 API 버전 관리를 구현해 볼 수 있습니다. API 버전 관리는 API의 재사용성과 호환성을 보장하기 위해 중요한 요소이므로, 실무에서 사용할 때 이점을 꼭 고려해보시기 바랍니다.