x_param = openapi.Parameter('x', in_=openapi.IN_FORM, description='srring',
type=openapi.TYPE_STRING)
y_param = openapi.Parameter('y', in_=openapi.IN_FORM, description='string',
type=openapi.TYPE_STRING)
@swagger_auto_schema(method='post', manual_parameters=[x_param,y_param])
@api_view(['POST'])
def test(request):
pass
我使用 drf_yasg
作为 Swagger 。
我完成了上面的编码并使用 swagger 进行了测试,当我使用 Chrome 检查时,请求负载为 x = 124 & y = 124124
。
并且,出现以下消息,发生了错误的请求错误。
{
"detail": "JSON parse error - Expecting value: line 1 column 1 (char 0)"
}
swagger中添加post参数是不是错误?
最佳答案
问题是您正在向 swagger 添加 form
类型的参数,但您的 View 似乎期望请求正文中包含 json 有效负载。在这种情况下,您可能希望将 request_body
与 openapi.Schema
对象一起使用。
@swagger_auto_schema(method='post', request_body=openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'x': openapi.Schema(type=openapi.TYPE_STRING, description='string'),
'y': openapi.Schema(type=openapi.TYPE_STRING, description='string'),
}
))
@api_view(['POST'])
def test(request):
pass
这会自动将您的架构
包装到in_=openapi.IN_BODY
的参数
中。
请参阅https://drf-yasg.readthedocs.io/en/stable/openapi.html了解详情。
当然,首选方法是使用基于类的 GenericAPIView 和序列化器,这将简化 View 代码和文档自省(introspection)。
关于django Rest Framework - 如何向 api 文档(drf_yasg)添加 post 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929098/