从Tornado Web服务器代码生成交互式API文档

时间:2017-03-20 09:51:22

标签: documentation swagger tornado swagger-ui api-doc

我有一个Tornado Web服务器,它在API中公开了一些端点。 我希望能够记录我的处理程序(端点) in-code ,包括描述,参数,示例,响应结构等,然后生成交互式文档,使用我的API“玩”,轻松发出请求并在沙箱环境中体验响应。

我知道Swagger,特别是他们的SwaggerUI解决方案是最好的工具之一,但我对它是如何工作感到困惑。我知道我需要为SwaggerUI引擎提供定义我的API的.yaml,但是如何从我的代码中生成它? 我找到的许多github库都不够好或者只支持Flask ......

由于

2 个答案:

答案 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()