FlaskSwagger: 讓API文檔管理更簡單

一、 FlaskSwagger初探

FlaskSwagger是用於Flask應用程序的一個工具,可自動生成和展示API文檔,以便更輕鬆地管理API。

使用FlaskSwagger,我們不僅可以直觀地查看API的介面文檔,也可以在SwaggerUI提供的交互性界面中對API進行測試和調試。


from flask import Flask
from flask_restful import Api, Resource
from flask_swagger import swagger

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

@app.route('/spec')
def spec():
    return swagger(app)

二、 部署FlaskSwagger

下面是部署FlaskSwagger的具體步驟:

1. 安裝FlaskSwagger


pip install flask-swagger

2. 在Flask應用中引用FlaskSwagger。


from flask_swagger import swagger

3. 設置Flask應用的文檔URL


@app.route('/spec')
def spec():
    return swagger(app)

4. 運行Flask應用


if __name__ == '__main__':
    app.run(debug=True)

三、 在SwaggerUI中展示API文檔

SwaggerUI是一種專門設計用於API文檔的互動式界面,可以更加清晰、明了的展示出API的各個欄位、參數,方便用戶與API進行互動式地體驗和調試。

通過FlaskSwagger,我們可以很容易地實現將SwaggerUI和API文檔整合在一起

只需在Flask代碼中添加以下路由即可:


from flask import Flask, request
from flask_restful import Resource, Api
from flask_swagger import swagger
from flask_swagger_ui import get_swaggerui_blueprint

app = Flask(__name__)
api = Api(app)

SWAGGER_URL = '/api/docs'  # URL for exposing Swagger UI (without trailing '/')
API_URL = '/spec'  # Our API url (can of course be a local resource)

# Call factory function to create our blueprint
swaggerui_blueprint = get_swaggerui_blueprint(
    SWAGGER_URL,
    API_URL,
    config={
        'app_name': "My Test Application"
    },
)

# Register blueprint at URL
# (URL must match the one given to factory function above)
app.register_blueprint(swaggerui_blueprint, url_prefix=SWAGGER_URL)

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

@app.route('/spec')
def spec():
    return swagger(app)

if __name__ == '__main__':
    app.run(debug=True)

四、 API文檔的自定義

在FlaskSwagger自動生成的API文檔中,我們可以通過下面兩種方式進行自定義:

1. 使用Python裝飾器自定義API信息

我們可以使用下述裝飾器來自定義API的信息:


from flask import Flask
from flask_restful import Resource, Api, fields, marshal_with
from flask_swagger import swagger

app = Flask(__name__)
api = Api(app)

resource_fields = {
    'name': fields.String,
    'address': fields.String,
    'date_updated': fields.DateTime,
}

class HelloWorld(Resource):

  @marshal_with(resource_fields)
  def get(self):
      """
      This endpoint will return a list of all the existing smells
      ---
      tags:
        - Smelly Things
      definitions:
        - schema:
            id: response
            properties:
              name:
                type: string
                default: "John"
              address:
                type: string
                default: "Street 1"
              date_updated:
                type: string
                format: date-time
                default: "2016-01-01T10:00:00Z"
        - schema:
            id: error_model
            properties:
              error:
                type: string
                description: description of error (should be short)
      responses:
        200:
          description: A list of all the smells
          schema:
            $ref: '#/definitions/response'
        500:
          description: An error occurred
          schema:
            $ref: '#/definitions/error_model'
      """
      return {'name': 'John', 'address': 'street 1', 'date_updated': '2016-01-01'}

api.add_resource(HelloWorld, '/')

@app.route('/spec')
def spec():
    swag = swagger(app)
    swag['info']['title'] = 'My API'
    swag['info']['description'] = 'Customize Swagger within Flask'
    return swag

2. 在SwaggerUI頁面中手動編輯API文檔

在SwaggerUI的界面中,我們可以編輯API文檔的信息,包括操作和參數等信息,可以方便快捷地對API進行調試和測試。

五、 總結

FlaskSwagger是一個非常實用的工具,能夠更加方便地管理API文檔,讓整個開發的過程更加輕鬆愉快。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/259343.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 16:28
下一篇 2024-12-15 16:28

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • 掌握magic-api item.import,為你的項目注入靈魂

    你是否曾經想要導入一個模塊,但卻不知道如何實現?又或者,你是否在使用magic-api時遇到了無法導入的問題?那麼,你來到了正確的地方。在本文中,我們將詳細闡述magic-api的…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • Vertx網關:高效率的API網關中心

    Vertx是一個基於JVM的響應式編程框架,是最適合創建高擴展和高並發應用程序的框架之一。同時Vertx也提供了API網關解決方案,即Vertx網關。本文將詳細介紹Vertx網關,…

    編程 2025-04-28
  • Elasticsearch API使用用法介紹-get /_cat/allocation

    Elasticsearch是一個分散式的開源搜索和分析引擎,支持全文檢索和數據分析,並且可伸縮到上百個節點,處理PB級結構化或非結構化數據。get /_cat/allocation…

    編程 2025-04-28
  • 解析Azkaban API Flow執行結果

    本文將從多個方面對Azkaban API Flow執行結果進行詳細闡述 一、Flow執行結果的返回值 在調用Azkaban API的時候,我們一般都會通過HTTP請求獲取Flow執…

    編程 2025-04-27

發表回復

登錄後才能評論