如何使用 django Rest Framework + drf_spectaulous + swagger 显示所需的请求正文

问题描述 投票:0回答:2

我最近开始使用 drf_spectaulous 和 swagger,我有一个 API 端点,需要包含字段的请求正文,但是我似乎不明白如何在 UI 中显示它。

我的看法:

    @extend_schema(
    responses={200: TripSerializer},
)
def get(self, request: Request) -> Response:
    trip = TripService.get_trip(trip_id=request.data.get("trip_id"))
    if trip is None:
        return Response(status=status.HTTP_404_NOT_FOUND)
    trip_serializer = TripSerializer(trip)
    return Response(trip_serializer.data, status=status.HTTP_200_OK)

我的请求正文:

{
"trip_id": "1"
}

我的 swagger UI ps

enter image description here

将给予任何帮助, 谢谢

python django django-rest-framework swagger-ui drf-spectacular
2个回答
2
投票

您可以将其添加到架构中:

@extend_schema(
        request=InputSerializer,
        responses={200: TripSerializer}
    ) 

如果您还没有InputSerializer,只需创建它:

class InputSerializer(serializers.Serializer): 
   trip_id = seriarlizer.IntegerField()

0
投票

我有同样的问题这里。显然,由于 GET 方法没有根据 HTTP 标准的请求正文,drf-spectaulous 无法识别它,你必须在某些设置中强制它

© www.soinside.com 2019 - 2024. All rights reserved.