生成接口文檔一直是一件麻煩的事,這裡想自動化生成swagger的接口文檔,是以用了一個架構:
Flask-RESTPlus連結裡有安裝教程。
結合yaml版本會更容易了解: yaml版本傳送門
本文依舊是以代碼+效果圖的方式表現:
導包 Api, Resource, fields
api:以Api建立一個執行個體。version,title,description :關于該api的版本,标題和描述
api.namespace :是命名空間,很多接口都有get,post,命名空間把他們分隔開,可了解為藍圖。
path:代表他們的路由位址,這裡讓他們都使用route的位址,不寫的話會把命名空間的name加到路由位址的最前面
接下來是model:
parser : 添加參數項,此處是要在請求區域内添加header參數,與@acs.expect(parser) 聯用
model:請求内容,或者是響應内容,都可以用model描述,請求内容與@acs.doc(body=model)聯用,響應内容與@acs.marshal_with(token) 聯用
差別:裝飾器裝飾的地方不同,注意下方栗子。
接下來看路由:
這裡的命名空間是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。
當api需要請求參數時:
@ca.doc: 描述參數和參數的作用
在底下的方法内可以直接擷取參數
那麼大緻的裝飾器作用都已經介紹了,下面把部分項目代碼和文檔效果圖都發出來:
代碼中的@token_validate是我自己寫的用來驗證token的,不是架構裡面的。
flask 代碼直接運作,點選http://0.0.0.0:5000/swagger就可以直接看到接口文檔了。
以上!
github restplus 點選這裡!
Flask-RESTPlus 文檔點選這裡!
原文連結:https://blog.csdn.net/qq_43178297/article/details/88850889
flask 後端采用 werkzeug.cached_property 出現 ImportError: cannot import name ‘cached_property’
解決方案:
即安裝的時候降低werkzeug 版本到0.16.0;
pip install werkzeug==0.16.0