REST API를 만들면 Swagger를 상당히 많이 사용한다.
그래서 Django 에서도 Swagger를 적용해보고자 한다.
그런데.. 하다보니 안되는 부분들을 발견해서 (버전이슈..)
포스팅해본다 ^^;
결론부터 말하자면,
django_rest_swagger를 쓰지말고 , drf-yasg를 쓰는 것을 추천한다
처음에 djnago-rest_swagger를 설치 후 , settings.py에 추가하고
기동하면
- AttributeError at /api/docs/ -> 'AutoSchema' object has no attribute 'get_link'
다음과 같은 오류가 난다..
https://github.com/encode/django-rest-framework/issues/6809
해당 글을 참조해서.. settings.py에 다음을 추가하면.. (저글에선 이걸 추가하면 된다는글이 대부분이다 ㅠ)
REST_FRAMEWORK = {
...
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}
But,,,
- django_rest_swagger - 'staticfiles' is not a registered tag library. Must be one of:
다음 오류가 발생,,,, 다시 구글링..
The problem is that staticfiles template tag was deprecated in Django 2.2 and is finally removed in Django 3.0 The djagno-rest-swagger package itself is deprecated and is no longer maintained. Their GitHub repo recommends something like drf-yasg |
해당글을 보면, staticfiles 템플릿을 Django3.0버전에서 삭제했고,
django-rest-swagger 패키지는 더이상 관리안한다고한다,,,
그래서 django-rest-swagger GitHub에서도 drf-yasg를 쓰도록 추천한다고 ^^;
여러분들~~ 그냥 속편하게 drf-wasg 쓰세염 ^_^
https://github.com/axnsan12/drf-yasg
을 참조해서 쓰면된닷
1. drf-yasg 설치
pip install -U drf-yasg
2. settings.py 설정
INSTALLED_APPS = [
...
'drf_yasg',
...
]
3.urls.py 적용
from django.contrib import admin
from django.urls import path, include
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_url_patterns = [
path('api/', include('test.urls')),
]
schema_view = get_schema_view(
openapi.Info(
title="Django API",
default_version='v1',
terms_of_service="https://www.google.com/policies/terms/",
),
public=True,
permission_classes=(permissions.AllowAny,),
patterns=schema_url_patterns,
)
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('test.urls')),
url(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
]
그러고 기동한뒤
http://localhost:8000/swagger로 접속하면 잘뜬다
그리고 http://localhost:8000/redoc으로도 접속하면 뜬다.
그럼 이만
뿅
'DEVELOP > Backend' 카테고리의 다른 글
Spring Security 에서 OAuth 2.0이란? (0) | 2020.05.18 |
---|---|
JPA이란? (전체적인 개념, 느낀점) (0) | 2020.05.18 |
Django CORS 설정하기 (0) | 2020.03.26 |
python pip Proxy 설정하기 (0) | 2020.03.24 |
Django 시작하기 [3] Django MVC 패턴 (0) | 2020.03.18 |