반응형

* 공부 과정에서 작성한 글로, 설명이 정확하지 않을 수 있습니다.

 

drf_yasg 라이브러리를 활용하면 Django 프로젝트의 API 리스트를 자동으로 생성할 수 있다.

단, generics나 Viewset을 활용한 CBV(Class Based View)여야 한다.

 

APIView를 사용하거나, generics, Viewset에서도 View 내부에서 커스터마이징한 메서드에 대해서는 제대로 된 명세를 작성해주지 않는다. 이 경우에는 직접 코드 내부에 명세에 관한 내용을 기입해야 한다.

 

(나는 대부분의 View가 APIView 또는 커스터마이징된 메서드이기 때문에 코드가 너무 지저분해질 것을 염려하여 Swagger에 직접 작성하기로 했다.)

 

 

 

패키지 설치 및 적용

(venv) % pip install drf-yasg
# settings.py

INSTALLED_APPS =
[	
	...
	'rest_framework',
    'myapp',
    'drf_yasg'
    ...
]

 

 

 

swagger 엔드포인드 추가

from django.contrib import admin
from django.urls import path, re_path
from django.conf import settings
#from django.conf.urls import url
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="Swagger Study API", 
        default_version="v1", 
        description="Swagger Study를 위한 API 문서", 
        terms_of_service="https://www.google.com/policies/terms/", 
        contact=openapi.Contact(name="test", email="dhkep03@gmail.com"), 
        license=openapi.License(name="Test License"), 
    ), 
    public=True, 
    permission_classes=(permissions.AllowAny,), 
)

urlpatterns = [
    path('admin/', admin.site.urls),
]

if settings.DEBUG:
    urlpatterns += [
        re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name="schema-json"),
        re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
        re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),    ]

 

 

 

 

적용 후 서버 실행하면 다음 주소에 접속이 가능하다.

 

 

 

http://localhost:8000/swagger/

 

 

 

http://localhost:8000/redoc/

 

반응형

+ Recent posts