如何在FastAPI端点中验证指定结构的filters参数?
在FastAPI中验证指定结构的参数
直接用Pydantic模型就能实现这个参数结构的验证,具体实现步骤如下:
1. 导入依赖模块
from fastapi import FastAPI, Body from pydantic import BaseModel from typing import List, Tuple, Any
2. 定义Pydantic验证模型
根据指定结构分层定义模型:
class Filters(BaseModel): # simple字段:多个三元组列表,前两个元素为字符串,第三个为任意类型 simple: List[Tuple[str, str, Any]] # combined字段:多个三元组列表,三个元素均为字符串 combined: List[Tuple[str, str, str]] class FilterRequest(BaseModel): filters: Filters
3. 编写FastAPI端点
在接口中直接使用定义好的模型作为请求体参数,FastAPI会自动完成参数验证:
app = FastAPI() @app.post("/filter-data") async def apply_filters(request: FilterRequest = Body(...)): # 处理验证后的参数逻辑 return {"received_filters": request.dict()}
验证效果说明
- 若请求体不符合结构要求,FastAPI会自动返回422错误,并附带详细的验证失败提示
- 比如simple三元组前两个元素非字符串、combined三元组存在非字符串元素等情况,都会被拦截校验
内容的提问来源于stack exchange,提问作者Raziye
相关产品推荐
相关产品推荐

