ホームページ >バックエンド開発 >Python チュートリアル >Swagger を使用した Django Rest フレームワーク
この記事では、Django REST フレームワーク プロジェクトでの Swagger の実装について説明します。アカウント管理に取り組みます
興味があれば過去の記事をチェックしてください!
REST フレームワーク用に私が見つけた最良の 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 ビューを使用してログインしましょう
次に、Swagger ページの上部にある [承認] ボタンを使用して認証します。必ずアクセス トークンを使用し、その前のベアラーを忘れないでください: "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 中国語 Web サイトの他の関連記事を参照してください。