前幾天有介紹了API及什麼是RESTful API了,也有簡單的介紹可以怎麼使用他,那今天這篇文章將介紹 Flask-RESTx
,Flask-RESTx
是一個強大的 Flask 擴展,他可以幫助我們快速並且輕鬆地創建 RESTful API
。Flask-RESTx
提供了豐富的功能集,包括自動文檔生成、請求驗證、自定義錯誤處理等等好用的功能。此外,我們還將瞭解如何將 Swagger 整合到我們的 Flask-RESTx 項目中,以自動生成詳細的 API 文檔並提供互動式測試功能。
在開始創建 RESTful API 之前,我們一樣首先需要確保我們的開發環境已經配置正確。這包括安裝必要的套件和設定我們的 Flask 應用程序。
pip install Flask-RESTx
from flask import Flask
from flask_restx import Api
app = Flask(__name__)
api = Api(app)
if __name__ == '__main__':
app.run(debug=True)
上面的程式創建了一個 Flask 應用程序,並初始化了 Flask-RESTx,我們將在其中定義 API 資源和路由。
# 引入需要的套件
from flask_restx import Namespace, Resource
test = Namespace("test", description='鐵人賽D29')
# 定義 RESTful 資源
@test.route("/hello")
class HelloWorld(Resource):
def get(self):
return {'message': 'Hello, World!'}
# 將命名空間加入 API
api.add_namespace(test, '/test')
這個示例中,我們創建了一個名為 "test"
的命名空間,並定義了一個名為 "HelloWorld" 的 RESTful 資源,其中包含一個 GET 方法,用於返回一條簡單的歡迎消息。
接著我們將程式啟動看看,就能看到我們第一個API了喔。
接著我們測試這個API,點她的try it out,接著點Execute就可以看到這個畫面了
這樣代表我們成功執行了喔!!
我們已經創建了一個基本的 Flask 應用程序並初始化了 Flask-RESTx,接著來看看如何定義資源和處理 RESTful 方法。
命名空間允許我們定義相關的 API 資源,並為這些資源指定一個統一的前綴路徑。這使得 API 更容易管理和擴展。
from flask import Flask
from flask_restx import Namespace, Resource, fields, Api
# 創建 Flask 應用
app = Flask(__name__)
api = Api(app)
# 定義命名空間
test_ns = Namespace("test", description='鐵人賽D29')
# 定義一個模型
input_model = api.model('InputModel', {
'name': fields.String(required=True, description='User name'),
})
# 定義一個資源
@test_ns.route('/hello')
class HelloResource(Resource):
@test_ns.expect(input_model, validate=True) # 使用模型定義預期的輸入
def post(self):
data = test_ns.payload # 自動解析並驗證請求數據
name = data['name']
return {'message': f'Hello, {name}!'}
# 將命名空間加入 API
api.add_namespace(test_ns, '/test')
if __name__ == '__main__':
app.run(debug=True)
接著來看看程式碼的各個部分說明:
test_ns
,用來組織和管理 API 資源。這個命名空間的描述是 '鐵人賽D29'
。api.model
方法定義了一個模型(Model) InputModel
,該模型描述了一個帶有 name 字段的數據結構。required=True
表示 name 字段是必需的。@test_ns.route('/hello')
中,我們定義了一個資源 HelloResource
,該資源具有一個 POST 請求方法。HelloResource
的 POST 方法中,我們使用 @test_ns.expect(input_model, validate=True)
裝飾器來指定模型 input_model
,這表示我們期望請求的輸入數據應該符合這個模型的結構,並且要進行驗證。test_ns
添加到 API 中,並指定路由前綴為 /test。接下來實際看看操作的畫面吧,一樣原神,啟動!
一進來可以先看到比原本的程式多了一個叫做Models
的選項,點開可以看到剛剛的描述解釋都在這裡了
接著回到上面的API部分,我們一樣點開Try it out,並且在payload部分寫上名字
接著執行他
就可以看到我們成功執行啦~~這個程式碼示範了如何使用 Flask-RESTx 創建一個具有數據驗證的簡單 API,該 API 接受 POST 請求,並根據請求中的數據返回歡迎消息。
今天就到這邊了,如果有興趣的朋友可以繼續往下研究!