development/Mr.dJango 장고뽀개기

장고 API 문서 만들기 - drf-yasg(Swagger 문서 자동화)

foruheon 2021. 1. 19. 15:33

 

Swagger?

API서버를 자동으로 문서화 시켜주는 도구이다. API 주소또는 각 API의 메소드를 명시해주고, request 나 body 같은 payload도 문서 내에서 사용 가능하게 해준다.

 

설치

pip install drf-yasg

 

환경설정

 

 

다음은 Swagger를 위한 URL 엔드포인트를 추가해야 한다.

urls.py에 추가해야 한다

 

 

 

클래스형  View와 Serialezer 작성

프로젝트 앱 내 url

urlpatterns = [
# path('user_list/', views.UserList.as_view(),),

path('v1/authorization/access-token', views.GetAccessToken.as_view(),),
# path('v1/authorization/RefreshToken/', views.GetAccessTokenByRefreshToken.as_view(),),
path('v1/authorization/refresh-token', views.TokenView.as_view(),),

]

 

 

사용자 인증을 구현하는 클래스이다.

 

# 사용자 인증을 하고 AccessToken을 반환한다
class GetAccessToken(GenericAPIView):
parser_classes = (MultiPartParser,)
serializer_class = AuthorizationSerializer  <- 클래스형 view에서 사용할 시리얼라이저 선언
permission_classes = [permissions.AllowAny]

@swagger_auto_schema(operation_summary="Authorization",
operation_description="POST /ds/api/v1/authorization/access-token",
responses={
200: SUCCESS.as_md() + USER_DOES_NOT_FOUND.as_md() + WRONG_CLIENT_ID.as_md() + PASSWORD_IS_WRONG.as_md()
},
)
def post(self, request):
params = request.POST
client_id = params.get('client_id')
client_secret = params.get('client_secret')
email = params.get('email')
password = params.get('password')