drf_yasg没有将TYPE_ARRAY作为有效类型

时间:2018-11-27 04:41:58

标签: django-rest-framework swagger drf-yasg

drf_yasg swagger生成器未将TYPE_ARRAY作为有效的参数类型。 实现如下

from drf_yasg import openapi
param1 = openapi.Parameter('param_name',
                            in_=openapi.IN_QUERY,
                            description='description of param',
                            type=openapi.TYPE_ARRAY,
                            required=True
                            )

drf_yasg的documentation建议使用openapi.TYPE_ARRAY作为有效类型。

生成器引发的错误是

File "/usr/local/lib/python3.6/dist-packages/drf_yasg/codecs.py", line 73, in encode
    raise SwaggerValidationError("spec validation failed", errors, spec, self)
drf_yasg.errors.SwaggerValidationError: spec validation failed

是否缺少某些配置,或者是因为TYPE_STRING,TYPE_NUMBER工作得很好?

1 个答案:

答案 0 :(得分:1)

Parameter中的TYPE_ARRAY需要使用items键:

param1 = openapi.Parameter('param_name',
                            in_=openapi.IN_QUERY,
                            description='description of param',
                            type=openapi.TYPE_ARRAY,
                            items=openapi.Items(type=openapi.TYPE_STRING)  # <------
                            required=True
)

有关更多详细信息,请参见OpenAPI 2.0 specification