Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python FastAPI/Pydantic能否单独验证列表中的输入项?_Python_Python 3.x_Fastapi_Pydantic - Fatal编程技术网

Python FastAPI/Pydantic能否单独验证列表中的输入项?

Python FastAPI/Pydantic能否单独验证列表中的输入项?,python,python-3.x,fastapi,pydantic,Python,Python 3.x,Fastapi,Pydantic,我有一个FastAPI post方法: 从fastapi导入fastapi 从fastapi.encoders导入JSU编码器 从pydantic导入BaseModel 从输入导入列表开始 作为pd进口熊猫 类输入项(基本模型): 特征:str 类别项(基本模型): 特征:str 结果:str app=FastAPI() @app.post(“/”,response_model=List[OutputItem]) 定义my_函数(输入:列表[InputItem]): df=pd.数据帧(JSU编

我有一个FastAPI post方法:

从fastapi导入fastapi
从fastapi.encoders导入JSU编码器
从pydantic导入BaseModel
从输入导入列表开始
作为pd进口熊猫
类输入项(基本模型):
特征:str
类别项(基本模型):
特征:str
结果:str
app=FastAPI()
@app.post(“/”,response_model=List[OutputItem])
定义my_函数(输入:列表[InputItem]):
df=pd.数据帧(JSU编码器(输入))
结果=df.apply(另一种方法)
将结果返回到目录(方向=记录)
我的问题是,如果我给它一个这样的列表:

[
{“NOTFeature”:“value”},
{“功能”:“值”},
{“功能”:“值”}
]
或者,如果其中一个值属于不同的数据类型,则整个操作当前将失败并返回错误。是否有办法让它处理错误,从而跳过失败的条目,并且仍然对列表中通过验证的项执行API函数


顺便说一句,如果有一种更平滑的方法来处理仍然使用数据帧的数据帧转换(这些对于函数中完成的其他数据处理是必不可少的),了解这一点也会非常有帮助

欢迎使用堆栈溢出

你的问题的简短答案是否定的。这是因为处理有效负载内容或修复格式错误的有效负载并不是pydantic(以及FastAPI)的职责

正确的方法是将
功能
成员
设置为可选
,并在到达方法时过滤掉,如下所示:

导入fastapi
导入键入
进口pydantic
类输入项(pydantic.BaseModel):
功能:键入。可选[str]
类输出项(pydantic.BaseModel):
特征:str
结果:str
app=fastapi.fastapi()
@app.post(“/”,response\u model=typing.List[OutputItem])
def my_函数(数据:typing.List[InputItem]):
data=[i.feature不是None时,数据中的i代表i]
打印(数据)
# ... 做你该做的

您可以添加错误消息吗?在API端,我刚刚得到:“POST/batch HTTP/1.1”422不可处理实体。从post的角度来看,这取决于消息中的错误,但这里有一些示例:(a)其中一个必需类别的名称错误:Response 422;'{“detail”:[{“loc”:[“body”,0,“StartTime”],“msg”:“field required”,“type”:“value_error.missing”}'(b)其中bool类别字段的类型错误:响应422:'{“detail”:[{“loc”:[“body”,0,“IsValid”],“msg”:“value无法解析为布尔值”,“type”:“type_error.bool”}”