在現代Web開發中,前後端分離的架構越來越常見,而RESTful API正是前後端數據交互的核心橋樑。簡單來說,RESTful API就是通過HTTP協議,按照REST(表述性狀態傳遞)風格設計的接口,用於在客戶端和服務器之間傳輸數據。本文將從基礎概念講起,用Flask框架帶大家實現一個簡單的GET數據接口,適合編程入門者快速上手。

一、什麼是RESTful API?

RESTful API是一種軟件架構風格,用於創建可擴展、可維護的Web服務。它的核心特點包括:
- 資源爲中心:接口圍繞“資源”(如用戶、商品、訂單)設計,每個資源有唯一的URL標識(例如/users代表用戶資源)。
- HTTP方法明確:使用標準HTTP方法(GET、POST、PUT、DELETE)表示對資源的操作:
- GET:獲取資源(如查詢用戶列表)。
- POST:創建資源(如新增用戶)。
- PUT:更新資源(如修改用戶信息)。
- DELETE:刪除資源(如刪除用戶)。
- 無狀態:服務器不保存客戶端的狀態信息,每次請求都獨立完整。
- 返回JSON格式:通常返回JSON數據,便於客戶端解析。

二、爲什麼選擇Flask?

Flask是一個輕量級的Python Web框架,它:
- 簡單靈活:學習曲線平緩,適合初學者快速上手。
- 擴展性強:基礎功能簡潔,可通過插件擴展(如數據庫連接、身份驗證)。
- 代碼量少:無需複雜配置,幾行代碼就能實現一個基礎接口。

三、安裝Flask

使用Python的包管理工具pip安裝Flask:

pip install flask

如果需要虛擬環境隔離依賴,可先創建虛擬環境(可選):

python -m venv myenv  # 創建虛擬環境
source myenv/bin/activate  # Windows下爲myenv\Scripts\activate
pip install flask

四、實現第一個GET接口

我們將分兩步實現:先做一個簡單的“問候”接口,再做一個“獲取用戶列表”的實用接口。

1. 簡單問候接口

目標:訪問/路徑時,返回“Hello, Flask!”。

代碼示例

from flask import Flask

# 初始化Flask應用
app = Flask(__name__)

# 定義路由:訪問/路徑時,執行hello函數
@app.route('/')
def hello():
    return "Hello, Flask!"  # 返回字符串

# 運行應用
if __name__ == '__main__':
    app.run(debug=True)  # debug=True:開發模式,自動重載代碼

關鍵解釋
- app = Flask(__name__):創建Flask應用實例,__name__是Python的內置變量,表示當前模塊名,用於定位資源路徑。
- @app.route('/'):路由裝飾器,定義訪問路徑爲/,當用戶訪問該路徑時,執行下方的hello函數。
- return "Hello, Flask!":函數返回字符串,Flask會自動將其轉換爲HTTP響應體。
- app.run(debug=True):啓動Web服務器,debug=True讓開發更便捷(代碼修改後自動重啓,錯誤信息更詳細)。

2. 進階:返回JSON數據的用戶列表接口

目標:訪問/users路徑,返回一個包含用戶信息的JSON數組。

代碼示例

from flask import Flask, jsonify  # 導入jsonify用於返回JSON

app = Flask(__name__)

# 模擬數據庫數據(實際項目中需從數據庫讀取)
users = [
    {"id": 1, "name": "Alice", "age": 25, "email": "alice@example.com"},
    {"id": 2, "name": "Bob", "age": 30, "email": "bob@example.com"},
    {"id": 3, "name": "Charlie", "age": 28, "email": "charlie@example.com"}
]

# 定義GET接口:/users
@app.route('/users', methods=['GET'])  # methods指定允許的HTTP方法,默認僅GET
def get_users():
    return jsonify(users)  # jsonify自動將列表轉爲JSON格式,並設置Content-Type爲application/json

if __name__ == '__main__':
    app.run(debug=True, port=5000)  # port=5000:指定端口(默認5000,可自定義)

關鍵解釋
- jsonify(users):將Python列表users轉換爲JSON格式的響應體,同時設置HTTP響應頭Content-Type: application/json,避免客戶端解析錯誤。
- methods=['GET']:明確接口只接受GET請求(默認也僅支持GET,此處顯式聲明更清晰)。

五、運行與測試接口

1. 啓動應用

在代碼文件(如app.py)所在目錄執行:

python app.py

控制檯輸出類似:

 * Serving Flask app 'app'
 * Debug mode: on
 * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)

表示應用已在本地5000端口啓動。

2. 測試接口

  • 瀏覽器訪問:打開瀏覽器,輸入http://localhost:5000/users,將看到返回的用戶列表JSON數據。
  • 命令行測試:使用curl命令:
  curl http://localhost:5000/users
  • Postman測試:打開Postman,選擇GET方法,輸入http://localhost:5000/users,點擊發送即可查看結果。

六、總結

通過本文,你已經掌握了用Flask實現簡單GET接口的核心步驟:
1. 導入Flaskjsonify(如需返回JSON)。
2. 初始化Flask應用。
3. 用@app.route定義路由和HTTP方法。
4. 編寫函數返回數據(字符串或JSON)。
5. 用app.run()啓動服務。

後續可以嘗試擴展:
- 添加更多路由(如/users/<user_id>獲取單個用戶)。
- 結合數據庫(如用SQLAlchemy連接MySQL/PostgreSQL)。
- 實現其他HTTP方法(如POST創建用戶)。

Flask的靈活性讓你能快速從入門到進階,祝大家在Web開發的道路上越走越遠!

小夜