繁体   English   中英

我如何在 drf-spectacular 中包含 400 个验证错误?

[英]How do I include 400 validation errors in drf-spectacular?

我想查看 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: 成功

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

有没有像

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

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

OpenApiResponse是一个方便的包装器,大多数时候不需要。 事实上,在这里,它可能没有按照您的预期进行。 您需要提供OpenApiResponse(response=SomeSerializer) ,否则您是说没有响应正文,因为默认值为None == no response。

您可能想要这样做:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM