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)
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 пока не поддерживают представления на основе классов.:(