728x90
반응형
SMALL
Django에서 지원하는 DRF(Django Rest Framework) 간단하게 Setting 하기

 

기본적으로 Swagger연동을 위해서는 Django가 설치되어 있어야 한다.
또한 App, Project 생성되어있어야 한다.
준비가 안되어 있으면 이전 포스팅 참고: Python, Django, Anaconda Setting, PyCharm Project

 

Swagger(DRF) 세팅 방법 및 결과 확인

1. DRF(Django Rest Framework) 설치 : pip install djangorestframework

2. Drf-Yasg 설치 : pip install drg-yasg

3. settings.py에 설치된 install 한 app추가

INSTALLED_APPS = [

    ........,

    'drf_yasg',

    'rest_framework'

]

4. 복사, 붙여 넣기 수준으로 urls.py에 아래 소스 추가

from rest_framework.permissions import AllowAny

from drf_yasg.views import get_schema_view

from drf_yasg import openapi

from django.urls import re_path

 

# [5. 실행화면]과 비교하면 쉽게 이해 가능(모두 수정가능)

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=[AllowAny]

    # [참고]

    # AllowAny(기본값) : 인증에 관계없이 모두 허용

    # IsAuthenticated : 인증된 요청만 허용

    # IsAdminUser : Staff인증 요청만 허용

    # IsAuthenticatedOrReadOnly : 인증이 안되어 있으면 읽기 권한만 허용

    # DjangoModelPermissons : 인증된 요청만 허용 + 장고 모델단위 권한 체크

    # DjangoModelPermissionsOrAnonReadOnly : DjangoModelPermissons 유사, 인증이 안되어 있으면 읽기 권한만 허용

    # DjangoObjectPermissons : 인증이 안되어 있으면 거부, 인증이 되어있으면 Object에 대한 권한 체크를 수행

)

 

# 기존에 있는 urlpatterns

 

if settings.DEBUG:

    urlpatterns += [

        re_path(r'^swagger(?P\.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')

    ]

5. 실행화면

    - http://127.0.0.1:8000/swagger/

Swagger 실행화면

 

공식문서 : https://drf-yasg.readthedocs.io/en/stable/readme.html

728x90
반응형
LIST

+ Recent posts