DRF API Document drf-spectacular

2023. 11. 27. 14:38· Django/API Docs
목차
  1. 왜 drf-spectacular 인가?
  2. drf-spectacular의 장점
  3. drf-spectacular 설정
  4. 라이브러리 설치
  5. settings.py 수정
  6. urls.py 수정
  7. drf-specatcular settings 설정
  8. 결과
  9. Reference
반응형

왜 drf-spectacular 인가?

나는 처음 drf doc api를 찾아보면서 drf-yasg와 django-rest-swagger 가 주로 많이 언급 되었었는데 drf-yasg가 특히나 많은 사람들이 사용하는 것 같아서 drf-yasg로 진행하였다. 

 

하지만 사용할 수록 불편함이 많았고 OpenAPI 3.0도 지원하지 않는 다는 것을 알았다. 그래서 찾아 보다가 drf-spectacular를 찾게 되었다.

 

drf-spectacular는 2020년 3월에 첫 릴리즈된 drf의 openAPI 3.0을 지원하는 유일한 오픈소스이다.

 

drf-spectacular의 장점

  1. swagger UI의 버전과 설정값들이 drf-spectacular의 버전에 의존하지 않는다.
    • drf-spectacular는 라이브러리 자체를 버전업 하지 않더라도 settings 값을 조절하면 최신 버전의 swagger-ui를 사용할 수 있다.
  2. swagger UI 자체에서 제공하는 UI 커스터 마이징 옵션들을 자유롭게 조절이 가능하다.

 

 

drf-spectacular 설정

라이브러리 설치

pip install djangorestframework # 만약 drf가 설치되어 있지 않으면 설치
pip install drf-spectacular  # pip을 사용하면 이렇게 설치

 

settings.py 수정

# settings.py

INSTALLED_APPS = [
    # ...
    'rest_framework',
    'drf_spectacular',
    # ...
]

REST_FRAMEWORK = {
    # YOUR SETTINGS  drf의 schema 클래스를 drf-specacular의 AutoSchema로 교체해줍니다.
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}

 

urls.py 수정

from django.contrib import admin
from django.urls import path
from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView


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

    # Open API 자체를 조회
    path('api/docs/', SpectacularAPIView.as_view(), name='schema'),

    # Open API Document UI로 조회: Swagger, Redoc
    path('api/docs/swagger/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
    path('api/docs/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'),
]

 

 

drf-specatcular settings 설정

 

Settings — drf-spectacular documentation

© Copyright 2020, T. Franzel. Revision fbbcab36.

drf-spectacular.readthedocs.io

위 링크를 읽어보고 설정값을 본인이 원하는 내용으로 수정하면 된다.

아래는 내가 커스터마이징한 설정값이다.

SPECTACULAR_SETTINGS = {
    'TITLE': 'Obab-project',
    'DESCRIPTION': "Obab API 문서입니다.</br>"
                   "토큰 인증을 하실 때는 헤더에 'Token xxx' 형태로 액세스 토큰에 Token(Bearer) 접두사를 붙여주세요.</br>"
                   "로컬에서 개발하실 때에는 하단의 HTTP 스키마를 선택해 주시고, 실제 서버에서는 HTTPS 스키마를 선택해 주세요.",
    'SWAGGER_UI_SETTINGS': {
        'dom_id': '#swagger-ui',
        'layout': 'BaseLayout',
        'deepLinking': True,
        'persistAuthorization': True,
        'displayOperationId': True,
        'filter': True,
    },
    'LICENSE': {
        'name': 'Git Hub',
        'url': 'https://github.com/O-BAB/obab-server',
    },
    'SCHEMA_PATH_PREFIX': r'/api/v[0-9]',
    'VERSION': '1.0.0',
    'SERVE_INCLUDE_SCHEMA': False,
}

 

 

결과

완성된 swagger 캡처본

 

 

Reference

 

Django Rest Framework API Document Generator (feat. drf-spectacular)

drf-yasg의 단점 그리고 Open API Specification 3.0

techblog.yogiyo.co.kr

 

drf-spectacular — drf-spectacular documentation

© Copyright 2020, T. Franzel. Revision fbbcab36.

drf-spectacular.readthedocs.io

 

반응형
저작자표시 (새창열림)

'Django > API Docs' 카테고리의 다른 글

[Postman] CSRFToken 에러 해결 하기, 최신버전  (0) 2024.11.04
[Postman] Swagger와 차이점 및 Postman으로 API 문서 작성  (0) 2024.04.16
drf_yasg package 정리  (0) 2024.04.09
DRF drf-yasg swaager access token(JWT) 입력 받기  (0) 2024.03.20
Django 프로젝트에 Swagger 적용하기  (0) 2023.05.03
  1. 왜 drf-spectacular 인가?
  2. drf-spectacular의 장점
  3. drf-spectacular 설정
  4. 라이브러리 설치
  5. settings.py 수정
  6. urls.py 수정
  7. drf-specatcular settings 설정
  8. 결과
  9. Reference
'Django/API Docs' 카테고리의 다른 글
  • [Postman] Swagger와 차이점 및 Postman으로 API 문서 작성
  • drf_yasg package 정리
  • DRF drf-yasg swaager access token(JWT) 입력 받기
  • Django 프로젝트에 Swagger 적용하기
Jong_seoung
Jong_seoung
기록하자, 머리는 생각하는 곳이지 저장장치가 아니다.
반응형
Jong_seoung
Today_developStory
Jong_seoung
전체
오늘
어제

블로그 메뉴

  • Home
  • Git Hub
  • 분류 전체보기 (351)
    • Theory (16)
    • Java (3)
      • 알고리즘 (2)
      • 문법 (0)
    • Spring (7)
      • 스프링 입문 (6)
      • PickTalk (0)
      • 에러처리 (1)
    • Python (80)
      • 알고리즘 - 이론 (17)
      • 알고리즘 - 내장함수, 라이브러리 등등 (3)
      • 알고리즘 - 백준 (53)
      • 나도코딩 정리 (2)
      • 기타 (5)
    • Django (159)
      • DRF (105)
      • 인프라 (46)
      • DataBases (2)
      • API Docs (6)
    • FrontEnd (22)
      • htmx (2)
      • React (8)
      • 자바스크립트 (12)
    • GIT (16)
    • 기타 (8)
      • 정리 (2)
      • Flutter (1)
      • 마이크로프로세서 - ATmega128 (2)
      • 개발환경 세팅 (3)
    • 자격증 (37)
      • 정보처리기사 (19)
      • SQLD자격증 (18)

인기 글

최근 글

태그

  • alarm
  • BFS
  • CSRF
  • Django
  • django channels
  • django sse
  • django tutorial
  • django 배포
  • django 스웨거 적용
  • Django 이미지 저장

최근 댓글

hELLO · Designed By 정상우.v4.3.0
Jong_seoung
DRF API Document drf-spectacular
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.