sanic - Как указать требуемый JSON?

Я хотел бы указать необходимый JSON для контроллера get/post методы для того, чтобы это показать в SwaggerUI.

Например, я хочу request.json выглядеть так:

{
  'key1': <int>,
  'key2': <string>
}

Я инициализирую SwaggerUI следующим образом:

from sanic_openapi import swagger_blueprint, openapi_blueprint

app = Sanic(__name__)

# Set up SwaggerUI
app.blueprint(openapi_blueprint)
app.blueprint(swagger_blueprint)

Как сделать так, чтобы оба ключа отображались в parameters? введите описание изображения здесь

1 ответ

Есть sanic_openapi.doc.consumes декоратор для декорирования функций просмотра для документирования их ввода. Это наименование функции декоратора следует из спецификации OpenAPI.

Вот один из способов его применения:

@app.post('/recording_test')
@doc.summary('Tests a recording')
@doc.consumes({'key1': str, 'key2': int}, location='body')
async def create_recording_test(request):
    ...

Вы можете смоделировать свой ввод, используя класс.

class RecordingTest:
    key1 = str
    key2 = int

Используйте смоделированный вход выше следующим образом

@app.post('/recording_test')
@doc.summary('Tests a recording')
@doc.consumes(RecordingTest, location='body')
async def create_recording_test(request):
    ...

Вы не видели эти параметры в swagger, потому что ваш метод get находится в классе. Sanic-openapi и Sanic-swagger пока не поддерживают представления на основе классов.:(

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