Как показать тело запроса с помощью django rest framework и drf_spectacular в представлениях на основе функций

У меня следующая проблема: мне трудно найти документацию по представлениям на основе функций, чтобы документировать их с помощью drf_spectacular, поскольку все это можно найти для представлений на основе классов

Я пробовал разные способы документировать requestBody в swagger, используя serializers_class, ручные объекты, inline_serializers, но все это безуспешно, здесь я оставляю фрагмент моего кода и скриншот как это должно быть и где я должен быть

@extend_schema(
    summary="Fetch order information",
    description="This endpoint filter orders based on the provided parameters.",
    tags=["orders"],
    request=OrderInfoParamsSerializer,    # HERE IS MY PROBLEM
    responses={
        200: OrderInfoSerializer(many=True),
    },
)
@extend_schema(request=None)
@api_view(["GET"])
@token_required
def order_info(request: Request) -> Response:
    params = OrderInfoParamsSerializer(data=request.data)
    if not params.is_valid():
        return Response({"error": params.errors}, status=status.HTTP_400_BAD_REQUEST)

    params = params.validated_data
   
    ...
class OrderInfoParamsSerializer(serializers.Serializer):
    order_id = serializers.IntegerField(
        required=False, allow_null=True, help_text="Filter by order ID"
    )
class OrderInfoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Orders
        fields = "__all__"

Я попытался перенести представления на те, которые основаны на классах, но это сработало только с одним из них в методе POST, а не GET (я мог бы перенести все свои представления, если бы это сработало)

Я не хочу заниматься рефакторингом всего проекта и хотел бы найти решение, которое работает для представлений, основанных на функциях.

Просто прикрепляем @extend_schema, как и в случае с обычными представлениями, основанными на классах.

@extend_schema(request=OrderInfoParamsSerializer)

DRF Spectacular не делает ничего другого с представлениями, основанными на функциях. Декоратор @extend_schema ведет себя одинаково в обоих случаях.

По-видимому, поскольку метод GET не имеет тела запроса в соответствии со стандартом HTTP, drf-spectacular не распознает его.

Только небезопасные методы могут иметь requestBody

.

https://github.com/tfranzel/drf-spectacular/issues/809

Тело запроса, применимое для данной операции. RequestBody полностью поддерживается в методах HTTP, где спецификация HTTP 1.1 RFC7231 явно определяет семантику для тел запросов. В других случаях, когда спецификация HTTP нечеткая (например, GET, HEAD и DELETE), requestBody разрешен, но не имеет четко определенной семантики, и по возможности его следует избегать.

https://swagger.io/specification/#operation-object

Вернуться на верх