路徑參數(shù)(Path Parameter)
路徑參數(shù)在路由里面用大括號括起來碳默,在方法中需要把參數(shù)寫出來挠日,還可以標注參數(shù)的類型宝磨,例如:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
聲明類型后弧关,如果返回的結果不對盅安,則會返回一個出錯的 message。所有的校驗都是通過 Pydantic 模塊來實現(xiàn)的梯醒。
在路由文件中宽堆,定義在前面的路徑會優(yōu)先匹配。
使用枚舉類型來做路徑參數(shù)
我們可以使用 Python 的枚舉類型 enum 來定義路徑參數(shù)茸习,限定其取值畜隶,例如:
from enum import Enum
from fastapi import FastAPI
class Name(str, Enum):
Allan = '張三'
Jon = '李四'
Bob = '王五'
app = FastAPI()
@app.get("/{who}")
async def get_day(who: Name):
if who == Name.Allan:
return {"who": who, "message": "張三是德國人"}
if who.value == '李四':
return {"who": who, "message": "李四是英國人"}
return {"who": who, "message": "王五是法國人"}
此時如果訪問 http://localhost:8000/張三 ,就可以得到 {"who": 張三, "message": 張三是德國人} 号胚。
包含路徑的參數(shù)
在路徑參數(shù)上把參數(shù)的類型設為 path 就可以使用帶路徑的參數(shù)籽慢,代碼如下:
from fastapi import FastAPI
app = FastAPI()
@app.get("/files/{file_path:path}") # 這里!
async def read_file(file_path: str):
return {"file_path": file_path}
這樣傳入的參數(shù)可以是類似 /home/johndoe/myfile.txt 之類的路徑猫胁。
查詢參數(shù)(Query Parameter)
查詢的參數(shù)如果是針對 get 請求箱亿,就是 url 后面用問號帶起的參數(shù),這些參數(shù)我們可以寫在路由方法的參數(shù)中弃秆,例如:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):
# ……
我們可以訪問諸如 http://localhost/items/?skip=0&limit=10 來測試届惋。
可選參數(shù)(Optional Parameters)
要使用可選參數(shù),需要先導入 typing 模塊中的 Optional菠赚,然后使用 Optional 并指定參數(shù)的默認值為 None 脑豹,例如:
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: str, q: Optional[str] = None):
if q:
return {"item_id": item_id, "q": q}
return {"item_id": item_id}
如果不定義參數(shù)的值,則該參數(shù)為 必填參數(shù) 衡查。