【发布时间】:2020-10-02 15:50:45
【问题描述】:
我有一个 FastAPI 发布方法:
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel
from typing import List
import pandas as pd
class InputItem(BaseModel):
Feature: str
class Item(BaseModel):
Feature: str
Result: str
app = FastAPI()
@app.post("/", response_model=List[OutputItem])
def my_function(input: List[InputItem]):
df = pd.DataFrame(jsonable_encoder(input))
result = df.apply(another_method)
return result.to_dict(orient=records)
我的问题是,如果我将这样的列表传递给它:
[
{"NOTFeature":"value"},
{"Feature":"value"},
{"Feature":"value"}
]
或者如果其中一个值属于不同的数据类型,则整个事情当前失败并返回错误。有没有办法让它处理错误以便跳过失败的条目,并且仍然对列表中通过验证的项目执行 API 函数?
顺便说一句,如果有一种更流畅的方法来处理仍然使用数据帧的数据帧转换(这些对于函数中完成的其他数据处理是必不可少的),这也将非常有帮助!
【问题讨论】:
-
可以添加错误信息吗?
-
在 API 方面,我刚刚得到:“POST /batch HTTP/1.1”422 无法处理的实体。从帖子方面来看,这取决于消息中的错误,但这里有一些示例: (a) 所需类别之一被错误命名:响应 422; '{"detail":[{"loc":["body",0,"StartTime"],"msg":"field required","type":"value_error.missing"}]}' (b) 其中bool 类别字段的类型错误:响应 422:'{"detail":[{"loc":["body",0,"IsValid"],"msg":"value could not be parsed to a boolean", "type":"type_error.bool"}]}'
标签: python python-3.x fastapi pydantic