处理请求体
在处理POST、PUT和DELETE请求时,我们通常需要从请求体中获取数据。在FastAPI中,我们可以使用request.body
属性来访问请求体中的数据。当我们使用pydantic
模型来定义请求体的结构时,FastAPI会自动将请求体反序列化为该模型的实例。
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
async def create_item(item: Item):
return item
在上面的代码中,我们定义了一个Item
模型,用于描述一个物品的属性。我们还定义了一个路由/items/
和一个视图函数create_item()
。当收到POST请求时,FastAPI将提取请求体中的JSON数据,并使用Item
模型将其反序列化为一个实例。然后,FastAPI将该实例传递给视图函数create_item()
作为参数。视图函数返回该实例作为JSON响应。
处理请求头
在FastAPI中,我们可以使用request.headers
属性来访问请求头中的数据。例如,我们可以使用request.headers.get("Authorization")
来获取请求头中的Authorization
字段的值。
@app.get("/items/")
async def read_items(token: str):
return {"token": token}
在上面的代码中,我们定义了一个路由/items/
和一个视图函数read_items()
。当收到GET请求时,FastAPI将提取请求头中的Authorization
字段的值,并将其传递给视图函数read_items()
作为参数。视图函数返回一个JSON响应,包含键值对{"token": token}
。