天天看點

flask自動生成swagger的api接口文檔

生成接口文檔一直是一件麻煩的事,這裡想自動化生成swagger的接口文檔,是以用了一個架構:

Flask-RESTPlus連結裡有安裝教程。

結合yaml版本會更容易了解: yaml版本傳送門

本文依舊是以代碼+效果圖的方式表現:

導包 Api, Resource, fields

api:以Api建立一個執行個體。version,title,description :關于該api的版本,标題和描述

api.namespace :是命名空間,很多接口都有get,post,命名空間把他們分隔開,可了解為藍圖。

path:代表他們的路由位址,這裡讓他們都使用route的位址,不寫的話會把命名空間的name加到路由位址的最前面

flask自動生成swagger的api接口文檔

接下來是model:

flask自動生成swagger的api接口文檔

parser : 添加參數項,此處是要在請求區域内添加header參數,與@acs.expect(parser) 聯用

model:請求内容,或者是響應内容,都可以用model描述,請求内容與@acs.doc(body=model)聯用,響應内容與@acs.marshal_with(token) 聯用

差別:裝飾器裝飾的地方不同,注意下方栗子。

flask自動生成swagger的api接口文檔

接下來看路由:

這裡的命名空間是acs,是以所有的裝飾器都是使用acs這個執行個體。

route:是路由位址

@acs.expect(parser) : 這裡就是添加請求頭參數了, 裝飾在class上面就是所有的方法都需要這個參數

response:相應内容,裝飾在class上面就是所有的方法都回有這個相應

class CreateAccounts(Resource): 這裡就不能直接使用方法了,需要建立一個繼承Resource的類,在類裡寫入請求方法。

@acs.doc: 描述你的這個方法的作用

@acs.doc(body=acc_obj) : 把acc_obj這個model放入請求的body中,它是可以做validate的,隻要在model後面加上validate=True。

@acs.marshal_with(token):把token這個model放入相應體中,也是可以做validate的,如果響應體寫了,那麼最後return的時候必須以鍵值對的形式return該model的參數名。

這個圖中的model沒寫,可參考上圖的model。

flask自動生成swagger的api接口文檔

當api需要請求參數時:

@ca.doc: 描述參數和參數的作用

在底下的方法内可以直接擷取參數

那麼大緻的裝飾器作用都已經介紹了,下面把部分項目代碼和文檔效果圖都發出來:

代碼中的@token_validate是我自己寫的用來驗證token的,不是架構裡面的。

flask自動生成swagger的api接口文檔

flask 代碼直接運作,點選http://0.0.0.0:5000/swagger就可以直接看到接口文檔了。

flask自動生成swagger的api接口文檔
flask自動生成swagger的api接口文檔

以上!

github restplus 點選這裡!

Flask-RESTPlus 文檔點選這裡!

原文連結:https://blog.csdn.net/qq_43178297/article/details/88850889

flask 後端采用 werkzeug.cached_property 出現 ImportError: cannot import name ‘cached_property’

flask自動生成swagger的api接口文檔

解決方案:

即安裝的時候降低werkzeug 版本到0.16.0;

pip install werkzeug==0.16.0