Sun*_*Kim 11 django swagger django-rest-framework drf-yasg
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
Run Code Online (Sandbox Code Playgroud)
我用作drf_yasg招摇.
我做了上面的编码并用swagger进行了测试,当我查看Chrome时,请求的有效负载是x = 124 & y = 124124.
并且,通过以下消息,发生了错误的请求错误.
{
"detail": "JSON parse error - Expecting value: line 1 column 1 (char 0)"
}
Run Code Online (Sandbox Code Playgroud)
将帖子参数添加到swagger是不对的?
axn*_*san 20
问题是您正在向formswagger添加类型参数,但您的视图似乎期望请求正文中有一个 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
Run Code Online (Sandbox Code Playgroud)
这将自动将您包装Schema成 a Parameterof in_=openapi.IN_BODY。有关详细信息,请参阅https://drf-yasg.readthedocs.io/en/stable/openapi.html。
当然,首选的方法是将基于类的GenericAPIView与 a 一起使用Serializer,这将简化视图代码和文档自省。
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |