FastAPI 如何处理请求和响应?
FastAPI 处理请求和响应的流程主要包括以下几个步骤:
定义路由:
使用 FastAPI 的 FastAPI 类创建一个应用实例,然后使用装饰器(如 @app.get、@app.post 等)定义路由和请求方法。
python
Copy code
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):
return {"item_id": item_id, "query_param": query_param}
请求参数验证和解析:
FastAPI 使用 Pydantic 模型进行请求参数的验证和解析。通过在路由处理函数中使用参数的类型提示,FastAPI 将自动验证请求参数,并将其转换为相应的 Python 类型。
python
Copy code
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
def create_item(item: Item):
return item
处理请求:
编写路由处理函数,它接收验证和解析后的请求参数,执行相应的业务逻辑,并返回处理结果。
python
Copy code
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):
return {"item_id": item_id, "query_param": query_param}
响应数据处理:
处理函数的返回值会被 FastAPI 转换为符合 OpenAPI 规范的 JSON 格式,并作为响应发送给客户端。
python
Copy code
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):
return {"item_id": item_id, "query_param": query_param}
异常处理:
使用 FastAPI 内置的异常处理机制,可以在路由处理函数中抛出 HTTPException 异常,FastAPI 会自动将其转换为相应的 HTTP 错误响应。
python
Copy code
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}
文档自动生成:
FastAPI 自动生成符合 OpenAPI 和 JSON Schema 规范的文档,可以通过浏览器访问 /docs 或 /redoc 查看和交互式测试 API。
以上是 FastAPI 处理请求和响应的基本流程。通过使用类型提示、Pydantic 模型和 FastAPI 提供的装饰器,可以简化开发流程,提高代码的可读性和可维护性。