FastAPI 异常处理与统一错误响应
在 Web 开发中,异常处理是不可或缺的一环。FastAPI 提供了灵活且优雅的异常处理机制,既可以使用内置的 HTTPException 抛出错误,也可以自定义异常类和全局异常处理器来构建统一的错误响应结构。掌握这些特性,可以让你的 API 更加健壮、易于调试,同时也便于前端统一处理错误提示。
使用 HTTPException
抛出错误
最常见的做法是使用 FastAPI 提供的 HTTPException
,它允许你直接抛出一个带有状态码、错误信息的响应:
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id != 42:
raise HTTPException(status_code=404, detail="Item not found")
return {"item_id": item_id}
响应示例:
请求 /items/1
,返回:
{
"detail": "Item not found"
}
你也可以添加响应头:
raise HTTPException(
status_code=403,
detail="Forbidden",
headers={"X-Error": "AccessDenied"},
)