1

我想在 400 响应中查看验证详细信息,因为它们可以被序列化程序重新调用。序列化程序可以根据缺少的字段或无效值返回错误,我希望文档指出状态码 400 会出现哪种错误。像这样

200:成功

400: [ { "organisation_id": [ "此字段为必填项。" ] } ] #include 任何可能来自序列化程序的验证错误

我的代码目前是这个

@extend_schema(
        summary="Create a new transaction",
        responses={
            201: OpenApiResponse(
                description='Success',
            ),
            400: OpenApiResponse(
                description='Bad request. One or more errors occured.',
            ),
        },
    )

目前这输出 200: Success

400:错误请求。发生一个或多个错误。

有没有类似的东西

400: OpenApiResponse(description=customSerializerErrors,
 ), #customSerializerErrors is something i hope gets errors from the serializer
4

1 回答 1

1

drf-spectacular在序列化程序的基础上工作。

OpenApiResponse是一个方便的包装器,大部分时间都不需要。事实上,在这里,它可能没有按照您的预期进行。你需要给OpenApiResponse(response=SomeSerializer),否则你说没有响应体,因为默认是None== 没有响应。

您可能想要这样做:

@extend_schema(
        summary="Create a new transaction",
        responses={
            201: YourSerializer,
            400: YourErrorSerializer,
        },
    )

没有预定义YourErrorSerializer,因为 Djangoerror_handler是高度动态的,无法检查。目前你需要YourErrorSerializer自己写这个。请注意,此序列化程序实际上并未使用,而只是说明了响应的结构。

于 2021-11-24T11:10:59.213 回答