Cet article couvrira l'implémentation de Swagger dans un projet de framework Rest Django ; nous allons travailler sur la gestion de nos comptes
Consultez les articles précédents si vous êtes intéressé !
Le meilleur générateur de swagger que j'ai trouvé pour rest-framework est drf-yasg, mais je suis ouvert aux suggestions si vous en connaissez un meilleur !
Commençons par l'installation du package
pip install drf-yasg
passons maintenant à notre fichier de paramètres
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
Nous avons ajouté l'application drf_yasg aux applications installées et défini la méthode d'authentification par défaut sur le jeton Bearer JWT.
maintenant au fichier 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 ]
c'est ça ! super travail !
essayons
python manage.py runserver 0.0.0.0:8555
l'ouverture http://localhost:8555/swagger/ devrait ressembler à
commençons par nous connecter à l'aide de la vue API de connexion dans swagger
Ensuite, nous nous authentifions à l'aide du bouton "Autoriser" en haut de la page swagger. Assurez-vous d'utiliser le jeton d'accès, et n'oubliez pas le Porteur devant celui-ci : "Jeton du Porteur..."
essayons de changer le mot de passe en utilisant Swagger
c'est vide ! swagger n'a pas pu reconnaître le schéma de requête, le moyen le plus simple de l'adapter est d'utiliser le schéma automatique 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")
ça a l'air bien maintenant
nous pouvons tester toutes les demandes authentifiées en utilisant Swagger maintenant ! le prochain article reviendra sur l'application des comptes
Rester à l'écoute ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!