Как добавить параметры публикации в документ 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, что упростило бы как представление кода, так и самоанализ документа.

Другие вопросы по тегам