我有一个Tornado Web服务器,它在API中公开了一些端点。 我希望能够记录我的处理程序(端点) in-code ,包括描述,参数,示例,响应结构等,然后生成交互式文档,使用我的API“玩”,轻松发出请求并在沙箱环境中体验响应。
我知道Swagger,特别是他们的SwaggerUI解决方案是最好的工具之一,但我对它是如何工作感到困惑。我知道我需要为SwaggerUI引擎提供定义我的API的.yaml
,但是如何从我的代码中生成它?
我找到的许多github库都不够好或者只支持Flask ......
由于
答案 0 :(得分:3)
根据我的理解,SwaggerUI依赖于swagger规范。
因此,它归结为以干净和优雅的方式生成Swagger规范
你有没有机会看apispec?
我发现这是一个带有龙卷风插件的活跃项目。
答案 1 :(得分:1)
这是我们在项目中的做法。我们制作了自己的模块,我们仍在积极开发中。有关更多信息:https://pypi.org/project/tornado-swirl/
import tornado.web
import tornado_swirl as swirl
@swirl.restapi('/item/(?P<itemid>\d+)')
class ItemHandler(tornado.web.RequestHandler):
def get(self, itemid):
"""Get Item data.
Gets Item data from database.
Path Parameter:
itemid (int) -- The item id
"""
pass
@swirl.schema
class User(object):
"""This is the user class
Your usual long description.
Properties:
name (string) -- required. Name of user
age (int) -- Age of user
"""
pass
def make_app():
return swirl.Application(swirl.api_routes())
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()