fastapi 请求参数校验
时间: 2024-09-13 16:01:05 浏览: 78
FastAPI是一个现代、快速的Web框架,用于构建API,具有自动交互式文档和强类型数据验证。FastAPI使用Pydantic库进行数据验证,Pydantic会根据Python类型提示自动推断出数据的类型,并且在数据到达时进行校验。
在FastAPI中,你可以通过在函数参数前添加类型注解来实现请求参数的校验。FastAPI会自动将请求的数据(包括路径参数、查询参数、请求体等)转换为相应的Python类型,并进行校验。如果校验失败,FastAPI将自动返回一个合适的HTTP错误响应。
例如,如果你有一个API端点,它期望接收一个名为`item_id`的路径参数和一个名为`q`的查询参数,你可以这样做:
```python
from fastapi import FastAPI, Path, Query
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int = Path(..., title="The ID of the item to get"),
q: str = Query(..., min_length=3, max_length=50, title="Query string"),
short: bool = False):
return {"item_id": item_id, "q": q, "short": short}
```
在这个例子中,`item_id`必须是一个整数,`q`是一个长度在3到50个字符之间的字符串。如果请求中提供的数据不符合这些要求,FastAPI会自动抛出`HTTPException`,并且返回一个状态码为422(Unprocessable Entity)的响应。
FastAPI还支持更复杂的校验,比如数字范围、正则表达式匹配、嵌套模型校验等。
阅读全文