How to generate an OpenAPI spec in Django Rest Framework?
There are two ways to generate an OpenAPI spec in Django Rest Framework: CLI command and API endpoint.
How it works
The actual spec is produced by an underlying generator class, called by either a CLI command or an API endpoint. Long story short: generator collects the project endpoints from settings.ROOT_URLCONF
and compiles a spec for each of them. To be able to generate a spec you need to install a pyyaml
package first:
pip install pyyaml
CLI command
To generate a spec via CLI command, call a generateschema
management command:
python manage.py generateschema
This command outputs an OpenAPI spec in YAML format by default.
API endpoint
To generate a spec via API endpoint, add this code to urls.py
:
from django.urls import path
from rest_framework.schemas import get_schema_view
urlpatterns = [
path('schema/', get_schema_view())
...
]
Now, when you call GET /schema/
, DRF will respond with an OpenAPI spec.