引言
本教程將教您如何使用輕量级的Python網頁框架Flask創建一個簡單的REST API。我們將涵蓋設定Flask應用程式的基本知識、定義路徑、處理請求以及返回JSON响应。在本次教程結束時,您將有一個可以擴展並與其他應用程式集成的運作中的API。
前置知識
- 一台運行Ubuntu的伺服器,以及具有sudo權限的非root用戶和一個活躍的防火牆。如需設置指引,請從此列表中選擇您的 distributions,並遵循我們的初始伺服器設定指南。請確保使用受支持的Ubuntu版本。
-
熟悉 Linux 命令行。若要學習命令行的基礎或重温,您可以查看這份Linux 命令行简介指南。
-
對 Python 程式設計有基本認識。
-
您的 Ubuntu 系統上必須安装 Python 3.7 或更高版本。欲了解如何在 Ubuntu 上運行 Python 腳本,請參考我們關於如何在 Ubuntu 上運行 Python 腳本的教程。
步驟 1 — 設定 Flask 環境
Ubuntu 24.04 默認搭載 Python 3。打开終端並運行以下命令以核實 Python 3 的安裝:
如果您的電腦上已經安裝了 Python 3,上述命令將返回 Python 3 的當前版本。如果尚未安裝,您可以運行以下命令進行安裝:
接下來,您需要在系統上安裝 pip
包安装器:
一旦 pip
安装完成,我們就来安装 Flask。
您将通过 pip
安装 Flask。建议在虚拟环境中进行此操作,以避免與系統上其他包的冲突。
步驟 2 – 建立 Flask 應用程式
接下來的步驟是為 Flask 應用程式撰寫 Python 程式碼。為了建立新的腳本,請前往你選擇的目錄:
當你在該目錄內時,請建立一個新的 Python 文件,<code>app.py,</code> 並導入 Flask。然後,初始化一個 Flask 應用程式並建立一個基本的路徑。
這會打開一個空的文字編輯器。你在這裡寫下你的邏輯,或者貼上以下的程式碼:
步驟 3 — 建立 RESTful 路由
在這個部分,我們將為 Flask 應用程式定義對應於用戶可以對 API 执行的不同操作的路由。每個路由將處理特定的 HTTP 方法。
GET
, POST
, PUT
, 和 DELETE
。這些方法對應於永久存儲的四個基本操作,通常稱為CRUD(創建、讀取、更新、刪除)。
將以下路徑添加到您的app.py
python腳本中:
讓我們更多地了解每個功能做什么:
-
Flask 導入:代碼導入了Flask必要的组件:
Flask
、jsonify
和request
。 -
記憶體數據存儲:
items
是一个简单的字典列表,作为API的临时数据存储。每个项目都有一个id
和一个name
。 -
GET
/api/物品
: 當一個GET
請求對/api/物品
進行時,服務器回傳项目中所有物品的清單。這對於取得集合中所有資源很有用。 -
POST
/api/物品
: 對/api/物品
發送 POST 請求容許客戶端建立新的項目。服務器期望在請求體中包含新项目的詳細信息的面JSON物件。在建立项目後,服務器以新的項目作為回應並返回一個201 已創建
狀態代碼。 -
PUT
/api/物品/
: 對/api/物品/<物品_id>
發送PUT
請求用於更新具有指定物品_id
的现有項目。客戶端在請求體中傳送更新的數據,服務器修改现有的項目。如果找不到该项目,则服务器返回一个404 未找到
错误。 -
DELETE
/api/items/
: 向/api/items/
发出DELETE
请求会从数据存储中移除具有指定item_id
的项目。如果项目成功删除,服务器会以204 No Content
状态码响应,表示删除成功且没有更多内容可返回。 -
執行應用程式:
if __name__ == "__main__":
区块確保當腳本直接執行時Flask應用程式會運行。
步驟 4 — 運行和測試您的 API
使用以下命令啟動 Flask 服務器:
您應該會看到 Flask 服務器正在運行,並顯示以下輸出:
從上面的輸出中,您可以注意到服務器正在 http://127.0.0.1
上運行,並監聽端口 5000
。
現在,您可以使用 curl
、Postman 或另一款 HTTP 客戶端來測試端點。在這個教程中,您將使用 curl
來測試端點和傳送 HTTP 請求。
打开另一个 Ubuntu 控制台,并逐一执行以下 curl
命令:
- GET:
curl http://127.0.0.1:5000/api/items
- POST:
curl -X POST -H "Content-Type: application/json" -d '{"name": "This is item 3"}' http://127.0.0.1:5000/api/items
- PUT:
curl -X PUT -H "Content-Type: application/json" -d '{"name": "This is updated item 1"}' http://127.0.0.1:5000/api/items/1
- DELETE:
curl -X DELETE http://127.0.0.1:5000/api/items/1
讓我們看看這些命令的實際作用:
您會發現服務器回傳了项目中所有项目的列表。
使用POST
方法,讓我們向數據存儲中添加一個新项目。
注意:在您運行Flask服務器的另一個控制台下,您會發現所有HTTP請求正在被执行,以及它們的响应代码。
這是监视、錯誤排查和解決服務器問題的好方法。
接下來,讓我們執行一個PUT
請求。對/api/items/<item_id>
的PUT
請求將使用指定的item_id
更新现有项目。
現在,讓我們執行一個GET
請求以查看更新的项目1。
最後,讓我們執行一個DELETE
請求以從數據存儲中删除项目。
這將從數據存儲中删除项目1。
為此,讓我們執行一個GET
請求。
你會發現項目1已經不存在且已被永久刪除。
結論
在這個教程中,你已經使用Flask建立了基本的REST API應用程式。現在你可以通過添加其他路由、整合資料庫或將其部署到像DigitalOcean這樣的雲端平台來擴展這個API。Flask是一種建造API的强大工具,並且隨著這些基本知識,你已經準備好開始建造更複雜的應用程式。
Source:
https://www.digitalocean.com/community/tutorials/create-a-rest-api-using-flask-on-ubuntu