علی یوسفیان
علی یوسفیان
خواندن ۲ دقیقه·۴ سال پیش

جنگو swagger برای rest api


شاید برای شما نیز اتفاق افتاده باشد که از پکیچ rest Django برای ارتباط با API در فریم‌ورک جنگو داشته باشید. django-rest-framework به صورت پیش‌فرض تمپلیتی برای آن‌که بتواند راحت‌تر با API کار کنید می‌دهد.

ولی خیلی کامل نیست و کاربر پسند برای برنامه نویسان نیست یکی از بهترین پکیچ که میتواند به شما کمک کند Django swagger است که به شما ui به صورت زیر می‌دهد.

برای نصب آن

pip install django-rest-swagger

پس از نصب پکیچ در قسمت setting.py پروژه


INSTALLED_APPS = ( ... 'rest_framework_swagger', )

در نهایت مسیر زیر را در url.py اصلی اضافه کنید

from django.conf.urls import url from rest_framework_swagger.views import get_swagger_view schema_view = get_swagger_view(title='Pastebin API') urlpatterns = [ url(r'^$', schema_view) ]

ولی مشکلی وجود داره django swagger دیگر پشتیبانی نمی‌شود و منغضی شده در همین جهت پکیج جدیدی معرفی شد که واقعا خیلی بهتر عملکرده نسبت به django swagger این پکیج با نام drf-yasg

مزایا اصلی ایم پکیچ

  • از سریالازرهای تو در تو به صورت کامل پشتیبانی می‌کند.
  • سازگار با ابزار codegen
  • قالب های سفارشی سازی در تمام نقاط فرآیند تولید مشخصات
  • مشخصات JSON و YAML
  • جدیدترین نسخه swagger-ui و redoc برای مشاهده مستندات تولید شده
  • طرح ایجاد شده Swagger می تواند به طور خودکار توسط swagger-spec-validator تأیید شود

طریقه نصب ساده‌ای داره

pip install -U drf-yasg

در فایل setting.py

INSTALLED_APPS = [ ... 'django.contrib.staticfiles', # برای فایل‌های css باید باشه 'drf_yasg', ... ]

در url.py را اضافه کنید:

from rest_framework import permissions from drf_yasg.views import get_schema_view from drf_yasg import openapi ... schema_view = get_schema_view( openapi.Info( title=&quotSnippets API&quot, default_version='v1', description=&quotTest description&quot, terms_of_service=&quothttps://www.google.com/policies/terms/&quot, contact=openapi.Contact(email=&quotcontact@snippets.local&quot), license=openapi.License(name=&quotBSD License&quot), ), public=True, permission_classes=[permissions.AllowAny], ) urlpatterns = [ url(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'), url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), ... ]

پیشنهاد میکنم ادامه داکیومنت drf-yasg را بخوانید من سعی میکنم قسمت‌های اصلی بعدی را در پست بعتی به اشتراک بگذارم.

باتشکر از شما

من را دنبال کنید :

Ali Yousefian Linkedin

djangoswaggerpythonrest
همیشه برنامه‌نویس ولی یه برنامه‌نویس متن باز عاشق پایتون جنگو و تحلیل داده
شاید از این پست‌ها خوشتان بیاید