본문 바로가기

Django

django API 문서 설정 (drf-yasg)

(참고) django rest framework는 설치가 되어있다는 가정하에 아래 내용을 진행하겠다.

drf-yasg란?

swagger라는게 있는데 해당 사항은 더 이상 패키지를 관리하지 않는다고 하여 drf-yasg를 사용하는 추세이기도 하다.

그래서 다른게 있는가? 다른건 없고 같은 API 문서 자동화 패키지 이다.

drf-yasg install 및 설정

drf-yasg 라이브러리 설치

$ pip install -U drf-yasg

settings.py 설정

INSTALLED_APPS = [
        ...
        'drf_yasg',
]

urls.py 설정

import debug_toolbar
from django.contrib import admin
from django.urls import path, include
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from rest_framework import permissions

# 기본 셋팅 url 경로
urlpatterns = [
    path('admin/', admin.site.urls),
]

# API 문서에 작성될 소개 내용
schema_view = get_schema_view(
    openapi.Info(
        title='API 문서 제목',
        default_version='API 버전',
        description=
        '''
        API 문서 설명

        작성자 : ...
        ''',
        terms_of_service='',
        contact=openapi.Contact(name='이름', email='이메일'),
        license=openapi.License(name='API 문서 이름')
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
    patterns=urlpatterns,
)

# API 작성에 필요한 url 경로
urlpatterns += [
    path('swagger<str:format>', schema_view.without_ui(cache_timeout=0), name='schema-json'),
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('docs/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
]

이렇게 설정을 마치고 runserver를 실행하고 localhost:8000/redoc 로 들어가면 API 문서가 셋팅된 화면을 볼 수 있다.