亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用flask生成swagger文檔

發布時間:2022-10-10 17:48:34 來源:億速云 閱讀:230 作者:iii 欄目:web開發

這篇文章主要講解了“怎么用flask生成swagger文檔”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用flask生成swagger文檔”吧!

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

  1. 安裝flask-restplus 第三方包,使用pip install flask-restplus 安裝即可。

  2. 在一個普通的正常的flask 應用項目結構下,應該是在extensions.py 下進行代碼書寫,因為這是進行程序擴展的代碼編寫處。導包,導入flask_restplus 下的Api,Resource,fields。獲取一個app 實例。并進行namespace 的書寫。代碼如下:

    api = Api(doc='/swagger')
    api.init_app(app, version='1.0', title='Data Visualization And Analysis API',
                 description='A Charting and Data analysis API')
    bar_line = api.namespace('drawing bar and line', path='/', description="draw bar and line chart")
    pie = api.namespace('drawing pie', path='/', description="draw pie chart")
    radar = api.namespace('drawing radar', path='/', description="draw radar chart")
    scatter = api.namespace('drawing scatter', path='/', description="draw scatter chart")
    data_analysis = api.namespace('data analysis', path='/', description="data analysis")

獲取一個實例化Api對象,app是一個實例化的flask對象,通過在實例化Api對象時通過doc 參數可以指定最終的接口文檔通過什么路由可以訪問到。api.namespace :是命名空間,很多接口都有get,post,命名空間把他們分隔開,可理解為藍圖。 path:代表他們的路由地址,這里讓他們都使用route的地址,不寫的話會把命名空間的name加到路由地址的最前面 description:是對該組下所有接口的總的一個注釋。

  1. 通過api.model 來描述請求的request 和 響應的response,通過api.namespace.parser 來描述請求的headers 參數。

代碼示例如下:

    # 使用parser 來描述接口的headers 和 query
    bar_line_parameter = bar_line.parser()
    bar_line_parameter.add_argument('Authorization', location='headers', default="a")
    bar_line_parameter.add_argument('User-Agent', location='headers', default="ua")
    # 使用model 來描述接口的請求體
    bar_line_model = api.model('Bar_Line_Request', {
        "type": fields.String(default="bar"),
        "title": DictItem(required=True, default={}, description="chart title option"),
        "item": DictItem(required=True, default={}, description="chart series item option"),
        "xaxis": DictItem(required=True, default={}, description="chart xaxis option"),
        "yaxis": DictItem(required=True, default={}, description="chart yaxis option"),
        "grid": DictItem(required=True, default={}, description="chart grid option"),
        "legend": DictItem(required=True, default={}, description="chart legend option"),
        "tooltip": DictItem(required=True, default={}, description="chart tooltip option"),
        "background": DictItem(required=True, default={}, description="chart tooltip option"),
    }, description="request api needed body parameter")
    # 使用model 來描述接口的響應
    bar_line_response = api.model('bar_line_Response', {
        'data': DictItem(required=True, default=bar_line_response_data_default, description="chart option"),
        'status': fields.Integer(required=True, default=200, description="response status"),
        'msg': fields.String(required=True, default="successful", description="api response message")
    })

如上,其中bar_line 是api.namespace() 的返回對象,使用parser 的add_argument() 方法來添加headers ,或query 中請求所需參數,同時可以定義默認值。 使用model 來描述請求的請求體,響應也是。model 需要指定一個唯一的key 值,和一個 {} 字典鍵值對,在該字典鍵值對中key值是所需傳輸的name,value 是通過flask-restplus 下的fields 來指定數據類型以及默認值描述 的值。 如果fields中提供的數據類型滿足不了使用,可以通過自定義類繼承fields.Row ,并且實現format 方法,來使用自定義的數據類型。代碼中的DictItem 就是自定義數據類型。

  1. 將以上定義的model,parser 應用到接口上。通過裝飾器的方式,代碼如下。

    # 使用api.namespace.route 來指定接口的訪問路由,使用description來描述接口
    @bar_line.route('/api/chart/draw/bar_and_line',
                    doc={"description": "返回圖表的echarts 配置項信息,當請求參數配置為空時返回默認配置的圖表即示例樣例,否則根據請求的配置參數返回對應的完整的圖表配置信息"})
    # 這里的api.namespace.expect 需要與上面的api.namespace.expect 聯用
    @bar_line.expect(bar_line_parameter)
    # 需要繼承于Resource類
    class BarLineOption(Resource):
        # doc 用于描述接口,body=X 指定請求的body描述
        @bar_line.doc('Return to bar and line chart configuration item')
        @bar_line.doc(body=bar_line_model)
        # marshal_with 指定響應的描述
        @bar_line.marshal_with(bar_line_response)
        # 接口支持什么方法,就定義一個什么方法。
        def post(self):
            return {'data': {},
                    "status": 200, "msg": "successful"}

感謝各位的閱讀,以上就是“怎么用flask生成swagger文檔”的內容了,經過本文的學習后,相信大家對怎么用flask生成swagger文檔這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台山市| 康乐县| 铜川市| 东乡族自治县| 瑞金市| 礼泉县| 博客| 星座| 永善县| 望谟县| 重庆市| 天祝| 兴安县| 通化市| 永善县| 交城县| 田林县| 夹江县| 叶城县| 精河县| 巴塘县| 华亭县| 金昌市| 定边县| 克拉玛依市| 宁蒗| 呼伦贝尔市| 金寨县| 霍山县| 交口县| 剑河县| 桐城市| 绥德县| 焦作市| 隆林| 汝城县| 卢龙县| 潜江市| 迁西县| 佛山市| 西乡县|