2016-09-29 57 views
0

我正在寻找一种方法来从Python服务的定义中生成Swagger规范(JSON和Swagger-UI)。我发现了很多选项(通常是基于Flask的),但是它们都使用了注释,我无法在代码中正确处理,例如在一个循环中用不同的路由定义10个等价的服务(在这个例子中,处理程序可以被细化,第一个函数调用来获取它)。从Python代码生成Swagger规范(无注释)

有没有办法做到这一点没有注释?我想通过调用一个函数(或者一个方法,或者一个类的构造函数)来获取API和它的文档中的方法,其中的值与该API方法的实现和文档相对应。

回答

0

我建议看看apispec

apispec是一个可插拔的API规范生成器。

目前支持的OpenAPI 2.0规范(f.k.a.扬鞭2.0)

apispec

from apispec import APISpec 

spec = APISpec(
    title='Gisty', 
    version='1.0.0', 
    info=dict(description='A minimal gist API') 
) 

spec.definition('Gist', properties={ 
    'id': {'type': 'integer', 'format': 'int64'}, 
    'content': 'type': 'string'}, 
}) 

spec.add_path(
    path='/gist/{gist_id}', 
    operations=dict(
     get=dict(
      responses={ 
       '200': { 
        'schema': {'$ref': '#/definitions/Gist'} 
       } 
      } 
     ) 
    ) 
) 
+0

谢谢。这非常酷,但是判断[示例](https://github.com/marshmallow-code/apispec):1.它不会生成并提供可观的用户界面。 2.它集成了Flask(非常松散,缺少swagger UI),无论如何都使用路由注释(我无法使用任何注释)。 APIspec可能会用于构建另一个解决方案(从零开始),但我无法在当前状态下使用它。 – Trylks

+0

我发现猎鹰不需要注释。可以使用apispec生成swagger.json并将其作为静态页面提供。但是,生成可靠的用户界面仍然是一个挑战。 – Trylks

+0

我发现了一个[小例子](https://github.com/diyan/falcon_seed/),它使用Falcon生成一个swagger ui,但它似乎在使用注释。 – Trylks