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
为招。
我完成了上面的编码,并大刀阔斧地对其进行了测试,当我使用Chrome浏览器检查时,请求有效载荷为x = 124 & y = 124124
。
并且,使用以下消息,发生了错误的请求错误。
{
"detail": "JSON parse error - Expecting value: line 1 column 1 (char 0)"
}
向post招贴中添加后置参数是否错误?
答案 0 :(得分:0)
问题是您正在添加form
类型的参数来招摇,但是您的视图似乎期望请求正文中有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
这将自动将您的Schema
包装到Parameter
中的in_=openapi.IN_BODY
中。
有关详细信息,请参见https://drf-yasg.readthedocs.io/en/stable/openapi.html。
当然,首选的方法是将基于类的GenericAPIView
与Serializer
一起使用,这将简化视图代码和文档自省。