2016-09-29 127 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