이 기사에서는 Django Rest 프레임워크 프로젝트에서 Swagger를 구현하는 방법을 다룹니다. 계정 관리 작업을 진행하겠습니다
관심있으시면 이전글을 확인해보세요!
휴식 프레임워크를 위해 제가 찾은 최고의 Swagger 생성기는 drf-yasg이지만 더 나은 것을 알고 계시다면 제안을 환영합니다!
패키지 설치부터 시작해 보겠습니다
pip install drf-yasg
이제 설정 파일로 이동합니다
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'drf_yasg', #new 'corsheaders', 'rest_framework', 'django_filters', 'app_account', 'app_admin', 'app_main', ] SWAGGER_SETTINGS = { 'LOGIN_URL' : '/api/account/login/', 'SECURITY_DEFINITIONS': { 'Bearer': { 'type': 'apiKey', 'name': 'Authorization', 'in': 'header' } } } REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_simplejwt.authentication.JWTAuthentication', ], 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' }
alive_diary/settings.py
설치된 앱에 drf_yasg 앱을 추가하고 기본 인증 방식을 Bearer JWT 토큰으로 설정했습니다.
이제 URL 파일로
from django.contrib import admin from django.urls import path, include from rest_framework.documentation import include_docs_urls # new from rest_framework.schemas import get_schema_view # new from drf_yasg.views import get_schema_view # new from drf_yasg import openapi # new schema_view = get_schema_view( openapi.Info( title="Swagger API", default_version='v1', ), public=True, ) API_DESCRIPTION = 'A Web API for creating and editing.' # new API_TITLE = 'API' # new urlpatterns = [ path('admin/', admin.site.urls), path('api/account/', include('app_account.urls')), path('docs/', include_docs_urls(title=API_TITLE,description=API_DESCRIPTION)), # new path('swagger/', schema_view.with_ui('swagger',cache_timeout=0),name="swagger-schema"), # new ]
바로 그거예요! 수고했어요!
한번 해보자
python manage.py runserver 0.0.0.0:8555
http://localhost:8555/swagger/를 열면 다음과 같습니다
Swagger의 로그인 API 보기를 사용하여 로그인해 보겠습니다
그런 다음 스웨거 페이지 상단의 '인증' 버튼을 사용해 인증합니다. 액세스 토큰을 사용해야 하며, 그 앞에 있는 Bearer를 잊지 마세요: "Bearer token..."
Swagger를 사용하여 비밀번호를 변경해 보겠습니다
텅 비어있습니다! swagger가 요청 스키마를 인식할 수 없습니다. 이를 맞추는 가장 쉬운 방법은 swagger 자동 스키마를 사용하는 것입니다
from drf_yasg.utils import swagger_auto_schema #new class AccountChangePasswordView(APIView): permission_classes = (IsAuthenticated,) renderer_classes = [CustomRenderer, BrowsableAPIRenderer] @swagger_auto_schema(request_body=ChangePasswordSerializer) # new def post(self, request, *args, **kwargs): serializer = ChangePasswordSerializer(data=request.data) if not serializer.is_valid(): raise APIException(serializer.errors) user = request.user password = serializer.validated_data.get("password") new_password = serializer.validated_data.get("new_password") if not user.check_password(password): raise APIException("invalid_password") user.set_password(new_password) user.save() return Response("success")
지금은 괜찮아 보이는데
이제 Swagger를 사용하여 인증된 모든 요청을 테스트할 수 있습니다! 다음 글은 계정 앱으로 돌아가겠습니다
기대해 주세요 ?
위 내용은 Swagger를 사용한 Django Rest 프레임워크의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!