Flask 和 RESTful API 簡介

Flask 是一個輕量級且靈活的 Python 微框架,能夠幫助開發者快速構建 Web 應用程序和 API。它提供了 Web 開發所需的核心功能,并通過插件和擴展實現高度可擴展性。在構建 RESTful API 時,Flask 提供了堅實的基礎,使開發過程更加簡潔明了。

REST(Representational State Transfer,表述性狀態轉移)是一種設計網絡應用程序的架構風格,基于一系列促進可擴展性、簡單性和模塊化的原則。RESTful API 遵循這些原則,允許客戶端對資源執行 CRUD 操作(創建、讀取、更新、刪除)。這些資源可以是 API 提供的任何數據或信息。

在本指南中,我們將構建一個 RESTful API,提供關于不同編程語言的信息。數據來源于 Hillel Wayne 對有影響力編程語言的研究。API 將支持以下操作:


設置開發環境

在開始構建 RESTful API 之前,我們需要設置開發環境,確保擁有所有必要的工具和依賴項來創建和測試 API。

  1. 創建一個用于存儲 Flask 應用程序的目錄:

    mkdir example_app && cd example_app
  2. 在目錄中創建一個名為 prog_lang_app.py 的文件:

    touch prog_lang_app.py
  3. 創建一個虛擬環境以隔離項目依賴項:

    python3-mvenvvenv
  4. 激活虛擬環境:

    sourcevenv/bin/activate

完成上述步驟后,開發環境已準備就緒,可以開始安裝 Flask 并構建 API。


安裝 Flask

使用 Python 的包管理工具 pip,可以輕松安裝 Flask。運行以下命令安裝 Flask 及其依賴項:

pip install flask

安裝完成后,我們可以開始構建 API。


創建列表端點

第一個端點將返回存儲在 API 中的所有編程語言列表??蛻舳丝梢酝ㄟ^發送 GET 請求來獲取數據。

  1. 打開 prog_lang_app.py 文件,創建一個內存數據存儲(如 Python 字典)以保存編程語言信息。
  2. 使用裝飾器定義端點,指定 URL 和處理的 HTTP 方法(如 GET)。
  3. 編寫 list_programming_languages() 函數,從內存數據存儲中檢索所有編程語言記錄,并以 JSON 格式返回。

定義端點后,啟動 Flask 應用程序并測試端點。


實現詳細信息端點

接下來,我們將創建一個端點,根據編程語言的名稱檢索其詳細信息??蛻舳丝梢酝ㄟ^ GET 請求并傳遞語言名稱作為參數來獲取數據。

prog_lang_app.py 文件中,定義以下代碼:

@app.route('/programming_languages/')
def get_programming_language(programming_language_name):
 return in_memory_datastore[programming_language_name]

該函數根據提供的語言名稱從內存數據存儲中檢索詳細信息,并以 JSON 格式返回。


向列表端點添加篩選功能

為了增強功能,我們將為列表端點添加篩選功能,使客戶端能夠根據發布年份過濾編程語言。

  1. prog_lang_app.py 文件中,導入 request 模塊以訪問 URL 中的查詢參數。
  2. 修改 list_programming_languages() 函數,使用 request.args.get() 獲取查詢參數(如 before-year)。
  3. 根據查詢參數過濾編程語言數據,并返回過濾后的結果。

構建創建端點

為了支持客戶端創建新的編程語言實例,我們將添加對 POST 方法的支持。

  1. 修改端點裝飾器,使其同時處理 GET 和 POST 請求。
  2. 定義 create_programming_language() 函數,處理包含新語言屬性的 JSON 請求體。
  3. 將新語言實例添加到內存數據存儲中,并返回創建的語言實例。

使用更新端點更新資源

客戶端可以通過發送 PUT 請求更新編程語言資源。

  1. 修改端點裝飾器,使其處理 GET 和 PUT 請求。
  2. 定義 update_programming_language() 函數,根據語言名稱和新屬性更新內存數據存儲中的實例。
  3. 返回更新后的語言實例。

使用刪除端點刪除資源

為了支持刪除功能,我們將創建一個端點處理 DELETE 請求。

  1. 修改端點裝飾器,使其處理 GET、PUT 和 DELETE 請求。
  2. 定義 delete_programming_language() 函數,根據語言名稱從內存數據存儲中刪除實例。
  3. 返回已刪除的語言實例。

使用 Flask 的高級功能增強 API

Flask 提供了多種高級功能和擴展,可以增強 API 的功能和性能,例如:

根據 API 的具體需求,可以選擇合適的擴展進行集成。


構建可擴展且安全的 API 的最佳實踐

為了確保 API 的可擴展性、安全性和可維護性,建議遵循以下最佳實踐:

通過遵循這些實踐,可以構建一個可靠的 RESTful API,為應用程序和服務提供穩定的集成點。


總結

本指南詳細介紹了如何使用 Python 和 Flask 構建 RESTful API。從開發環境的設置到 CRUD 操作的實現,再到數據過濾和高級功能的集成,我們全面覆蓋了構建 API 的關鍵步驟。通過遵循最佳實踐,您可以創建一個高效、安全且可擴展的 API,滿足現代應用程序開發的需求。

構建 RESTful API 是現代軟件開發的重要組成部分。希望本指南能幫助您掌握相關技能,并成功構建自己的 API。


原文鏈接: https://shape.host/resources/how-to-build-a-restful-api-using-python-and-flask

上一篇:

如何使用Rust構建強大的GraphQL API

下一篇:

五大Python REST API框架
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費