前一天我們學會了如何透過網址路徑來鎖定單一資源,但如果是要列出一長串的資料,我們通常會需要做分頁或條件篩選。這時候,網址後面跟著問號「?」的寫法就派上用場了,例如 /items?skip=0&limit=10,這在 API 開發中稱為「查詢參數」。
在 FastAPI 裡,設定查詢參數非常簡單。只要你的函式參數沒有出現在 @app.get 的路徑字串中,FastAPI 就會自動將它視為查詢參數。
請在你的 main.py 加入以下內容:
from fastapi import FastAPI
app = FastAPI()
fake_items_db = [{"item_name": "蘋果"}, {"item_name": "香蕉"}, {"item_name": "橘子"}]
@app.get("/items/")
def read_item(skip: int = 0, limit: int = 10):
return fake_items_db[skip : skip + limit]
在這裡,skip 和 limit 都給了預設值(0 和 10)。
如果你只呼叫 http://127.0.0.1:8000/items/,它們的值就是預設的 0 和 10,會回傳完整的清單。
如果你呼叫 http://127.0.0.1:8000/items/?skip=1&limit=1,FastAPI 會自動擷取你網址上傳入的值,回傳 [{"item_name": "香蕉"}]。
你可以輕鬆地將「路徑參數」與「查詢參數」寫在同一個函式裡,FastAPI 非常聰明,會精準地幫你分類好,完全不用手動解析 URL。