Встроенный сериализатор для тела запроса не отображается в документации DRF Spectacular
Я работаю над проектом Django REST Framework (DRF), используя DRF Spectacular для документации API. Мой ViewSet
не использует сериализатор, потому что логика не требует его, но мне нужно описать форму тела запроса в документации API.
Для достижения этой цели я использую функцию DRF Spectacular inline_serializer
для динамического определения схемы тела запроса. Вот пример того, как я это реализовал:
from drf_spectacular.utils import extend_schema, inline_serializer
from rest_framework import serializers
from drf_spectacular.types import OpenApiTypes
from rest_framework.response import Response
class ExampleViewSet(viewsets.ViewSet):
@extend_schema(
request=inline_serializer(
name="InlineFormSerializer",
fields={
"str_field": serializers.CharField(),
"int_field": serializers.IntegerField(),
"file_field": serializers.FileField(),
},
),
responses={200: OpenApiTypes.OBJECT}, # Placeholder for actual response schema
)
def create(self, request, *args, **kwargs):
# Business logic here
return Response({"message": "Success"})
Хотя генерация схемы работает без ошибок, схема тела запроса, описанная с помощью inline_serializer
, не отображается во внешней документации API (например, в Swagger UI). Остальная часть API документирована правильно.
Шаги, которые я предпринял
- Убедитесь, что DRF Spectacular установлен и правильно настроен в settings.py
REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}
- Убедились, что команда генерации схемы выполняется без проблем .
- Убедились, что используется inline_serializer в соответствии с документацией.
- Убедились, что swagger-ui доступен и корректно отображает другие конечные точки.
Что может быть причиной того, что схема запроса inline_serializer
не отображается во фронтенд-документации? Есть ли какие-либо дополнительные конфигурации или лучшие практики, которые я могу упустить для документирования конечных точек API, не использующих сериализаторы DRF?
Буду признателен за любые соображения или рекомендации по решению этой проблемы