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