Maison > développement back-end > Tutoriel Python > Cadre Django Rest avec Swagger

Cadre Django Rest avec Swagger

Mary-Kate Olsen
Libérer: 2024-11-30 05:37:13
original
901 Les gens l'ont consulté

Qu’attendre de cet article ?

Cet article couvrira l'implémentation de Swagger dans un projet de framework Rest Django ; nous allons travailler sur la gestion de nos comptes

Ordre de série

Consultez les articles précédents si vous êtes intéressé !

  1. Projet IA à partir de zéro, The Idea, Alive Diary
  2. Prouvez que c'est faisable avec Google AI Studio
  3. Configuration du projet API Django
  4. Gestion des comptes Django (1), inscription et activation
  5. Gestion des comptes Django (2), connexion et changement de mot de passe
  6. Swagger avec Django rest framework (Vous êtes ici ?)

Installation et configuration

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
Copier après la connexion

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'
}

Copier après la connexion

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
]

Copier après la connexion

c'est ça ! super travail !
essayons

python manage.py runserver 0.0.0.0:8555 
Copier après la connexion

l'ouverture http://localhost:8555/swagger/ devrait ressembler à

Django Rest framework with Swagger

Tester Swagger avec ApiView personnalisé

commençons par nous connecter à l'aide de la vue API de connexion dans swagger

Django Rest framework with 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..."

Django Rest framework with Swagger

essayons de changer le mot de passe en utilisant Swagger

Django Rest framework with 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")
Copier après la connexion

ça a l'air bien maintenant

Django Rest framework with Swagger

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal