Project/Team22

[Team22] DRF API 문서 - drf yasg

mingyung 2024. 3. 11. 12:09

오늘은 장고 REST Framework에서 swagger를 통해 API를 문서화 해보자.

 

먼저 drf-ysag에 대한 문서는 아래의 링크를 통해 이동할 수 있다. 상세한 정보를 원한다면 공식 문서를 활용하자.

https://drf-yasg.readthedocs.io/en/stable/

 

drf-yasg — drf-yasg 1.21.7 documentation

© Copyright 2018, Cristi V. Revision db42d356.

drf-yasg.readthedocs.io

 

install

가상환경을 활성화 하고 install 하자.

pip install -U drf-yasg

 

 

 

settings.py

settings.py에 다음이 추가되어야 한다.

INSTALLED_APPS = [
   ...
   'django.contrib.staticfiles',  # required for serving swagger ui's css/js files
   'drf_yasg',
   ...
]

 

 

 

urls.py

총 4가지의 엔드포인트를 추가할것이다.

  • A JSON view of your API specification at /swagger.json
  • A YAML view of your API specification at /swagger.yaml
  • A swagger-ui view of your API specification at /swagger/
  • A ReDoc view of your API specification at /redoc/

프로젝트의 urls.py에 다음을 추가한다.

...
from django.urls import re_path
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="Snippets API",
      default_version='v1',
      description="Test description",
      terms_of_service="https://www.google.com/policies/terms/",
      contact=openapi.Contact(email="contact@snippets.local"),
      license=openapi.License(name="BSD License"),
   ),
   public=True,
   permission_classes=(permissions.AllowAny,),
)

urlpatterns = [
   path('swagger<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('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
   ...
]

 

 

확인

runserver 해주고, /swagger/에 접근한다.

프로젝트의 urls.py에 다음을 추가한다.

그럼 다음처럼 api를 확인할 수 있다.