Как добавить параметры публикации в документ API (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
я использовал drf_yasg
как чванство.
Я выполнил приведенную выше кодировку и протестировал ее с помощью swagger, а при проверке с помощью Chrome полезная нагрузка запроса x = 124 & y = 124124
,
И со следующим сообщением произошла ошибка неверного запроса.
{
"detail": "JSON parse error - Expecting value: line 1 column 1 (char 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
, что упростило бы как представление кода, так и самоанализ документа.