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 и другие форматы.