Как мне получить aiohttp-swagger для распознавания переменных запроса GET?
Я хотел бы использовать aiohttp-swagger в моем проекте Python, но я не могу понять, как он обрабатывает переменные полезной нагрузки GET URL и POST. У меня есть этот пример кода на основе примера быстрого запуска здесь. Единственное изменение, которое я сделал, - это то, что я включил параметр запроса в GET URL.
from aiohttp import web
from aiohttp_swagger import *
async def ping(request):
"""
---
description: This end-point allow to test that service is up.
tags:
- Health check
produces:
- text/plain
responses:
"200":
description: successful operation. Return "pong" text
"405":
description: invalid HTTP Method
"""
return web.Response(text="pong %s" % request.match_info['var']) # change here (1/2)
app = web.Application()
app.router.add_route('GET', "/ping/{var}", ping) # change here (2/2)
setup_swagger(app)
web.run_app(app, host="127.0.0.1")
Сгенерированная страница Swagger/OpenAPI, похоже, не знает о переменной. Я ожидал, что он сгенерирует текстовое поле, в котором я смогу заполнить значение для переменной запроса "var". Как мне сделать это с AIO-HTTP? Является ли это возможным? Если нет, есть ли другая библиотека, которая может справиться с этим?
Для справки, у меня есть фон C#, и я делал это в прошлом, используя библиотеку Swashbuckle.
1 ответ
Вы должны добавить parameters
относиться к вашей аннотации.
Рабочий пример:
from aiohttp import web
from aiohttp_swagger import *
async def ping(request):
"""
---
description: This end-point allow to test that service is up.
tags:
- Health check
parameters:
- in: query
name: var
produces:
- text/plain
responses:
"200":
description: successful operation. Return "pong" text
"405":
description: invalid HTTP Method
"""
return web.Response(text="pong %s" % request.match_info['var']) # change here (1/2)
app = web.Application()
app.router.add_route('GET', "/ping/{var}", ping) # change here (2/2)
setup_swagger(app)
web.run_app(app, host="127.0.0.1")