API 문서화: drf-spectacular로 OpenAPI 3.0(Swagger) 문서 자동 생성하기
drf-spectacular를 사용하여 Django REST Framework에서 OpenAPI 3.0 스키마를 자동 생성하고, 코드와 문서 간의 불일치를 방지하며 개발 생산성을 향상시키는 방법
기본 설정 및 연동
패키지 설치
pip install drf-spectacularsettings.py 설정
INSTALLED_APPS에drf_spectacular추가REST_FRAMEWORK에DEFAULT_SCHEMA_CLASS설정SPECTACULAR_SETTINGS로 API 문서 기본 정보 정의
URL 설정
스키마 다운로드:
/api/schema/Swagger UI:
/api/swagger/ReDoc:
/api/redoc/
@extend_schema 데코레이터 활용
기본 파라미터
tags: API 그룹화summary: 한 줄 요약description: 상세 설명 (마크다운 지원)request: 요청 Body 스키마responses: 응답 스키마 (상태 코드별)parameters: 쿼리/경로 파라미터
ViewSet 전체 적용
@extend_schema_view로 각 action별 문서화 한 번에 정의읽기/쓰기 Serializer 분리로 명확성 증대
Serializer 문서화 강화
SerializerMethodField 타입 명시
@extend_schema_field로 정확한 반환 타입 지정OpenApiTypes.STR,OpenApiTypes.BOOL등 활용
응답 예시 추가
OpenApiExample로 실제 응답 구조 제공성공/실패 케이스별 예시 포함
인증 정보 포함
인증 스킴 정의
SPECTACULAR_SETTINGS의SECURITY_DEFINITIONS에 Bearer Token, API Key 등 설정Swagger UI "Authorize" 버튼 활성화
View별 인증 설정
security파라미터로 특정 API의 인증 방식 오버라이드실제
authentication_classes와 일치시키기
Enum과 TypedDict 활용
Enum 사용
모델의
choices필드를TextChoices로 정의Swagger UI에서 드롭다운으로 자동 표시
TypedDict 활용
구조화된 딕셔너리 응답의 스키마 정의
Serializer 없이 명확한 응답 구조 문서화
실무 팁
문서도 코드로 관리하여 Git 버전 관리 및 코드 리뷰 포함
기본 자동 생성 후 필요한 부분부터 점진적 개선
@action데코레이터 적극 활용에러 응답(4xx, 5xx)도 충실히 문서화
프로덕션에서는 정적 스키마 파일 생성 고려
Last updated
