Navigation

Django REST frameworkを使ったAPIバージョニングの実装手法

📅 7月 9, 2025
👤
1 min read

Django REST frameworkを使ったAPIバージョニングの実装手法

概要

Django REST frameworkを使用してAPIのバージョニングを実装することは、APIの変更や進化に柔軟に対応し、クライアントとの互換性を維持するために重要です。バージョニングを適切に行うことで、異なるバージョンのAPIエンドポイントを同時にサポートすることが可能となります。

この記事では、Django REST frameworkを使用してAPIバージョニングを実装する方法について解説します。

環境構築


# Django REST frameworkのインストール
pip install djangorestframework

実装コード


# serializers.py
from rest_framework import serializers

class MyModelSerializerV1(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ['id', 'name']

# views_v1.py
from rest_framework import viewsets
from .serializers import MyModelSerializerV1
from .models import MyModel

class MyModelViewSetV1(viewsets.ModelViewSet):
    serializer_class = MyModelSerializerV1
    queryset = MyModel.objects.all()

# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views_v1 import MyModelViewSetV1

router = DefaultRouter()
router.register('mymodel', MyModelViewSetV1, basename='mymodel-v1')

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

# settings.py
REST_FRAMEWORK = {
    'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.AcceptHeaderVersioning',
    'DEFAULT_VERSION': '1.0',
    'ALLOWED_VERSIONS': ['1.0'],
}

使用例


# クライアントからのリクエストヘッダーにバージョン情報を含めて送信
# GET /api/v1/mymodel/

テストコード


# pytestを使用したテストコード例
import pytest

@pytest.mark.django_db
def test_get_mymodel(api_client):
    response = api_client.get('/api/v1/mymodel/')
    assert response.status_code == 200

応用・カスタマイズ

APIバージョニングの実装において、URLパスやヘッダーだけでなく、クエリパラメーターを使用してバージョニングを行う方法もあります。さらに、カスタムバージョニングロジックを実装することで、より柔軟なバージョニング戦略を構築することが可能です。

関連技術

  • Django REST framework: https://www.django-rest-framework.org/
  • Django 公式ドキュメント: https://docs.djangoproject.com/en/stable/

この記事では、Django REST frameworkを使用したAPIバージョニングの実装手法について紹介しました。適切なバージョニング戦略を選択し、APIの変化に柔軟に対応することで、より堅牢なAPIシステムを構築することができます。

← Back to Python