백엔드 Back-end/장고 Django

DRF(Django REST Framework) API 문서 자동화 패키지, drf-spectacular 설정 방법은?

Tap to restart 2023. 6. 24. 21:32

DRF와 API 문서 자동화, drf-spectacular

DRF(Django REST Framework)란?

Django만으로 API 서버를 개발할 수도 있지만 Django에 DRF 패키지를 추가로 설치하면 REST API 서버를 좀 더 쉽게 개발할 수 있다. 

 

API 문서는?

API 사용법을 알려주는 문서를 말한다. 아래 YouTube DATA API 문서가 그 예다. API 문서를 프런트 개발자한테 공유해야 프런트 개발자가 웹페이지를 개발할 수 있다.

 

 

API 문서 자동화가 필요한 이유는?

API 문서를 일일이 PDF로 작성하든 위키로 작성하든 굉장히 시간이 많이 걸린다. 또 코드는 변경했지만 문서 변경은 깜빡하는 경우가 많아서 API 문서가 현재 API 서버 작동과 다른 경우도 많이 발생한다. API 문서 자동화툴을 사용하면 코드 변경 시 API 문서에 자동 반영되어 개발자의 시간과 수고를 절약할 수 있다. SpringBoot, NestJs, Django(DRF) 등 각 프레임워크마다 API 문서 자동화 라이브러리가 있다.

 

drf-spectacular

drf-spectacular는 API 문서 자동화 팩키지 중 하나로 DRF로 API 서버를 개발할 때 API 문서를 OpenAPI 3 기반으로 생성해준다. 코드와 통합된 한 저장소에서 API 문서를 관리할 수 있고, 코드 변경 시 예를 들면 시리얼라이저 변경 시 자동으로 문서에 반영되어서 좋다.

 

drf-spectacular 설정 방법

settings.py에 아래 내용을 추가한다.

 

INSTALLED_APPS += [
    "drf_spectacular",
]

REST_FRAMEWORK = {
...
    "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema",
}

SPECTACULAR_SETTINGS = {
    "TITLE": "Form API",
    "DESCRIPTION": "Form API Documentation",
    "VERSION": "1.0.0",
    "SWAGGER_UI_SETTINGS": {
        "docExpansion": "list",
        "defaultModelRendering": "example",
        "defaultModelExpandDepth": 10,
        "defaultModelsExpandDepth": 10,
        "deepLinking": True,
        "displayRequestDuration": True,
        "persistAuthorization": True,
        "syntaxHighlight.activate": True,
    },
}

 

urls.py에 아래 내용을 추가한다.

 

from drf_spectacular.views import SpectacularSwaggerView, SpectacularJSONAPIView, SpectacularRedocView

urlpatterns = [
...
    path("openapi.json/", SpectacularJSONAPIView.as_view(), name="schema"),
    path("swagger-ui/", SpectacularSwaggerView.as_view(), name="swagger-ui"),
    path("redoc/", SpectacularRedocView.as_view(), name="redoc"),
]

 

그 뒤 API 서버를 실행해서 /swagger-ui/에 접속하면 아래 예와 같은 화면을 볼 수 있다.

 

Swagger-ui

 

/redoc에 접속하면 redoc 문서를 볼 수 있다.

 

redoc

 

반응형