Rumah > pembangunan bahagian belakang > Tutorial Python > Rangka kerja Django Rest dengan Swagger

Rangka kerja Django Rest dengan Swagger

Mary-Kate Olsen
Lepaskan: 2024-11-30 05:37:13
asal
967 orang telah melayarinya

Apa yang diharapkan daripada artikel ini?

Artikel ini akan merangkumi pelaksanaan Swagger dalam projek rangka kerja rehat Django; kami akan mengusahakan pengurusan akaun kami

Pesanan siri

Semak artikel sebelum ini jika berminat!

  1. Projek AI dari Scratch, The Idea, Alive Diary
  2. Buktikan ia boleh dilaksanakan dengan Google AI Studio
  3. Persediaan Projek API Django
  4. Pengurusan akaun Django (1), pendaftaran dan pengaktifan
  5. Pengurusan akaun Django (2), log masuk dan tukar kata laluan
  6. Swagger dengan rangka kerja rehat Django (Anda di sini ?)

Pemasangan dan persediaan

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
Salin selepas log masuk

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

Salin selepas log masuk

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
]

Salin selepas log masuk

itu sahaja! kerja yang bagus!
jom cuba

python manage.py runserver 0.0.0.0:8555 
Salin selepas log masuk

membuka http://localhost:8555/swagger/ sepatutnya kelihatan seperti

Django Rest framework with Swagger

Menguji Swagger dengan ApiView tersuai

mari mulakan dengan log masuk menggunakan paparan API log masuk dalam swagger

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

Django Rest framework with Swagger

mari cuba tukar kata laluan menggunakan Swagger

Django Rest framework with 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")
Salin selepas log masuk

ia kelihatan baik sekarang

Django Rest framework with Swagger

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan