如何解决如何在 FastAPI 中禁用模式检查?
我正在将服务从 Flask 迁移到 FastAPI,并使用 Pydantic 模型生成文档。但是,我对架构检查有点不确定。恐怕会有一些意想不到的数据(比如不同的字段格式),它会返回错误。
在 Pydantic 文档中,有一些方法可以在不检查架构的情况下创建模型:https://pydantic-docs.helpmanual.io/usage/models/#creating-models-without-validation
但是,由于这显然是由 FastAPI 本身实例化的,因此我不知道如何在从 FastAPI 返回时禁用此架构检查。
解决方法
您可以返回 Response directly,或者使用 custom responses 进行自动转换。在这种情况下,不会根据响应模型验证响应数据。但是您仍然可以按照 Additional Responses in OpenAPI 中的说明记录它。
示例:
class SomeModel(BaseModel):
num: int
@app.get("/get",response_model=SomeModel)
def handler(param: int):
if param == 1: # ok
return {"num": "1"}
elif param == 2: # validation error
return {"num": "not a number"}
elif param == 3: # ok (return without validation)
return JSONResponse(content={"num": "not a number"})
elif param == 4: # ok (return without validation and conversion)
return Response(content=json.dumps({"num": "not a number"}),media_type="application/json")
,
您可以将请求模型设置为 {
"startDateTime": "2021-01-22T14:30:34.2444915-05:00","endDateTime": "2021-01-22T15:00:34.2464912-05:00","subject": "User Token Meeting"
}
或 typing.Dict
typing.List
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。