DEV Community

Cover image for YASG: The Redoc Swagger UI for Django/DRF
Javid Mougamadou
Javid Mougamadou

Posted on

YASG: The Redoc Swagger UI for Django/DRF

Concepts

Generate real Swagger/OpenAPI 2.0 specifications from a Django Rest Framework API.

Compatible with

  • Django Rest Framework: 3.10, 3.11, 3.12
  • Django: 2.2, 3.0, 3.1
  • Python: 3.6, 3.7, 3.8, 3.9

Image

Getting started

1) Installation

The preferred instalation method is directly from pypi:

pip install drf-yasg
Enter fullscreen mode Exit fullscreen mode

2) Quickstart

In settings.py:

INSTALLED_APPS = [
   ...
   'django.contrib.staticfiles',  # required for serving swagger ui's css/js files
   'drf_yasg',
   ...
]
Enter fullscreen mode Exit fullscreen mode

In urls.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="Snippets API",
      default_version='v1',
      description="Test description",
      terms_of_service="https://www.google.com/policies/terms/",
      contact=openapi.Contact(email="contact@snippets.local"),
      license=openapi.License(name="BSD License"),
   ),
   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'),
   ...
]
Enter fullscreen mode Exit fullscreen mode

This exposes 4 endpoints:

  • A JSON view of your API specification at /swagger.json
  • A YAML view of your API specification at /swagger.yaml
  • A swagger-ui view of your API specification at /swagger/
  • A ReDoc view of your API specification at /redoc/

Links

GitHub logo axnsan12 / drf-yasg

Automated generation of real Swagger/OpenAPI 2.0 schemas from Django REST Framework code.

Top comments (2)

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt •

Actually, ReDoc doesn't need to integrate at all with the backend. Just need openapi.json.

Collapse
 
javidjms profile image
Javid Mougamadou •

Yeah, YASG generate the openapi.json which could be used for the Swagger UI or the Redoc