Artikel ini akan merangkumi pelaksanaan Swagger dalam projek rangka kerja rehat Django; kami akan mengusahakan pengurusan akaun kami
Semak artikel sebelum ini jika berminat!
Penjana swagger terbaik yang saya temui untuk rangka kerja rehat ialah drf-yasg, tetapi saya terbuka kepada cadangan jika anda tahu yang lebih baik!
Mari mulakan dengan pemasangan pakej
pip install drf-yasg
kini beralih ke fail tetapan kami
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
Kami telah menambahkan apl drf_yasg pada apl yang dipasang dan menetapkan kaedah pengesahan lalai kepada token Pembawa JWT.
sekarang ke fail 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 ]
itu sahaja! kerja yang bagus!
jom cuba
python manage.py runserver 0.0.0.0:8555
membuka http://localhost:8555/swagger/ sepatutnya kelihatan seperti
mari mulakan dengan log masuk menggunakan paparan API log masuk dalam swagger
Kemudian, kami mengesahkan menggunakan butang "Izinkan" di bahagian atas halaman sombong. Pastikan anda menggunakan token akses dan jangan lupa Pembawa di hadapannya: "Token pembawa..."
mari cuba tukar kata laluan menggunakan Swagger
kosong! swagger tidak dapat mengenali skema permintaan, cara paling mudah untuk menyesuaikannya ialah menggunakan skema auto 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")
ia kelihatan baik sekarang
kami boleh menguji semua permintaan yang disahkan menggunakan Swagger sekarang! artikel seterusnya akan kembali ke apl akaun
Nantikan ?
Atas ialah kandungan terperinci Rangka kerja Django Rest dengan Swagger. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!