DRF Spectacular

drf-spectacular автоматически генерирует OpenAPI 3.0 документацию для Django REST Framework API.

Установка

1# Установка пакета
2pip install drf-spectacular
1# Или через Poetry
2poetry add drf-spectacular

Настройка

 1# settings.py
 2INSTALLED_APPS = [
 3    'drf_spectacular',
 4]
 5
 6REST_FRAMEWORK = {
 7    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
 8}
 9
10SPECTACULAR_SETTINGS = {
11    'TITLE': 'Your Project API',
12    'DESCRIPTION': 'Your project description',
13    'VERSION': '1.0.0',
14}

URLs

1from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
2
3urlpatterns = [
4    path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
5    path('api/docs/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
6]

Кастомизация схемы

 1from drf_spectacular.utils import extend_schema, OpenApiParameter
 2
 3@extend_schema(
 4    summary="List books",
 5    description="Get a list of all books",
 6    parameters=[
 7        OpenApiParameter(name='author', description='Filter by author', required=False, type=str),
 8    ],
 9    responses={200: BookSerializer},
10)
11def book_list(request):
12    # ваш код здесь
13    pass

Генерация схемы

1# Генерация статической схемы
2python manage.py spectacular --file schema.yml
3
4# Генерация схемы для определенного приложения
5python manage.py spectacular --file schema.yml --api-version 1.0.0

FAQ

Q: Как кастомизировать схему?
A: Используй декораторы @extend_schema для кастомизации эндпоинтов.

Q: Можно ли экспортировать схему в другие форматы?
A: Да, поддерживаются YAML, JSON и другие форматы.