Django는 파이썬 기반의 웹 프레임워크로서, 강력하고 유연한 백엔드 서버 개발을 가능하게 합니다. Django REST Framework (DRF)는 Django에 RESTful API를 쉽게 구현할 수 있도록 도와주는 도구입니다. 그러나 API의 문서화는 종종 간과되는 부분이며, 이는 API의 사용성을 저하시킬 수 있습니다. 이에 따라 Swagger와 CoreAPI와 같은 API 문서화 도구를 사용하는 방법을 살펴보겠습니다.
1. Django REST Framework 소개
Django REST Framework는 Django로 RESTful API를 쉽게 구축할 수 있게 해주는 고급 라이브러리입니다. 이 라이브러리는 다음을 제공합니다:
- 직관적인 API 설계
- 강력한 인증 시스템
- 유연한 시리얼라이징
- 다양한 필터링 옵션
- 문서화 지원
이러한 기능 덕분에 DRF를 사용하면 복잡한 API를 보다 쉽게 구축할 수 있습니다.
2. API 문서화의 중요성
API 문서화는 API의 사용법을 명확히 하고, 외부 개발자 또는 팀원들이 API를 효율적으로 사용할 수 있도록 하는 중요한 과정입니다. 잘 문서화된 API는:
- 사용자 교육을 용이하게 합니다.
- 버그를 줄일 수 있습니다.
- 개발 속도를 높입니다.
- 기타 팀원 간의 소통을 원활하게 합니다.
3. Swagger와 CoreAPI 소개
Swagger는 API 문서화를 위한 가장 널리 사용되는 도구 중 하나입니다. Swagger UI는 API를 시각적으로 보여주고, 사용자들이 요청을 테스트할 수 있는 기능을 제공합니다. 반면, CoreAPI는 DRF와 자연스럽게 통합되어 API 문서화 및 테스트를 쉽게 해줍니다.
3.1 Swagger
Swagger는 API 문서와 테스트 도구를 제공합니다. Swagger를 사용하면 다음과 같은 장점을 누릴 수 있습니다:
- 사용자 친화적인 UI 제공
- API 요청/응답 테스트
- API 문서 자동 생성
3.2 CoreAPI
CoreAPI는 RESTful API의 문서화 및 테스트를 위한 더 경량화된 옵션입니다. DRF와의 통합이 용이하며, API 사양을 정의할 수 있는 간단한 문법을 제공합니다. 핵심 기능으로는 다음이 있습니다:
- 간단한 사용법
- API 문서 자동화
- 완성도 높은 스펙
4. Django 프로젝트에 Swagger 및 CoreAPI 설정하기
Swagger와 CoreAPI를 Django 프로젝트에 통합하는 과정은 아래와 같은 단계로 진행됩니다.
4.1 설정 준비
먼저 기본적인 Django 프로젝트와 Django REST Framework가 설치되어 있어야 합니다. 필요한 패키지를 설치합시다:
pip install djangorestframework
pip install drf-yasg # Swagger 문서화를 위한 패키지
pip install coreapi # CoreAPI 이용을 위한 패키지
4.2 Django settings 구성
Django 프로젝트의 settings.py
에 다음과 같이 추가합니다:
INSTALLED_APPS = [
...
'rest_framework',
'drf_yasg',
]
4.3 Swagger 설정 예제
Swagger를 설정하기 위해 urls.py
에 다음 코드를 추가합니다:
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
schema_view = get_schema_view(
openapi.Info(
title="My API",
default_version='v1',
description="API 설명서",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="contact@myapi.local"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=(permissions.AllowAny,),
)
urlpatterns = [
...
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
]
4.4 CoreAPI 설정 예제
CoreAPI를 사용하기 위한 설정은 좀 더 간단합니다. urls.py
에 다음 코드를 추가합니다:
from rest_framework.documentation import include_docs_urls
urlpatterns = [
...
path('docs/', include_docs_urls(title='My API title')),
]
5. API 문서화 예제
이제 간단한 API를 만들어 문서화를 테스트해 보겠습니다. 간단한 메모리 저장소 API를 만들어 보겠습니다.
5.1 모델 정의
먼저, API를 위한 모델을 정의합니다. models.py
에 아래와 같이 작성합니다:
from django.db import models
class Note(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return self.title
5.2 시리얼라이저 정의
모델과 연결될 시리얼라이저를 생성합니다. serializers.py
를 생성하거나 사용하여 아래와 같이 작성합니다:
from rest_framework import serializers
from .models import Note
class NoteSerializer(serializers.ModelSerializer):
class Meta:
model = Note
fields = '__all__'
5.3 뷰 정의
API의 로직을 정의할 뷰를 만들어야 합니다. views.py
를 수정하여 아래와 같이 작성합니다:
from rest_framework import viewsets
from .models import Note
from .serializers import NoteSerializer
class NoteViewSet(viewsets.ModelViewSet):
queryset = Note.objects.all()
serializer_class = NoteSerializer
5.4 URL 패턴 정의
이제 API의 URL 패턴을 설정합니다. urls.py
에 아래와 같이 작성합니다:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import NoteViewSet
router = DefaultRouter()
router.register(r'notes', NoteViewSet)
urlpatterns = [
path('', include(router.urls)),
]
6. API 테스트 및 문서화
모든 설정이 완료되었습니다. Django 서버를 실행하고 http://localhost:8000/swagger/
또는 http://localhost:8000/docs/
에 접속하여 API 문서화 상태를 확인해보세요. 각 엔드포인트에서 제공하는 API 문서와 함께 요청을 테스트할 수 있습니다.
7. 결론
Django REST Framework와 Swagger, CoreAPI를 사용하여 API 문서화를 효율적으로 진행할 수 있습니다. 이러한 도구들은 개발자의 생산성을 높이고, 다른 사용자에게도 유용한 정보를 제공합니다. 프로젝트의 복잡성이 증가함에 따라 API 문서화는 점점 더 중요해지며, 따라서 이러한 도구들을 적극적으로 활용하는 것이 좋습니다.
8. 추가 자료
더 읽어보기: