【发布时间】:2018-11-28 11:00:08
【问题描述】:
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测试了它,当我用Chrome检查时,请求有效载荷是x = 124 & y = 124124。
并且,出现以下消息,发生了错误的请求错误。
{
"detail": "JSON parse error - Expecting value: line 1 column 1 (char 0)"
}
swagger中加post参数有错吗?
【问题讨论】:
-
in_=openapi.IN_FORM告诉它您希望它是一个表单,而您的 API 配置为接受 JSON? -
@SungHoKim 基于 JSON 响应,服务器似乎在 POST 正文中寻找有效的 JSON 数据。您是否尝试过相应地格式化您的请求正文?也许像
{'x': 124, 'y': 124124}? -
尝试将您的
openapi.IN_FORM更改为openapi.IN_BODY -
所以我只想指出,我从 drf-yasg 切换到 drf-specacular 并且没有回头。它在定制方面更简单,并且得到积极维护。drf-yasg 上的最后一次提交是 3 个月前...drf-spectacular.readthedocs.io/en/latest/customization.html
标签: django django-rest-framework swagger drf-yasg