相关疑难解决方法(0)

仅当作为 FastAPI 调用的一部分返回时才排除 pydantic 模型字段

语境

我有一个非常复杂的 pydantic 模型,其中有很多嵌套的 pydantic 模型。我想确保某些字段永远不会作为 API 调用的一部分返回,但我希望这些字段用于内部逻辑。

我尝试过的

我首先尝试使用 pydantic 的Field函数来指定exclude我不想返回的字段上的标志。这有效,但是我的内部逻辑中的函数每当.dict()通过调用.dict(exclude=None).

相反,我return_in_api在 上指定了一个自定义标志Field,目标是仅在 FastAPI 调用时应用排除.dict()。我尝试编写一个中间件来根据包含的嵌套字段来调用.dict()和传递我自己的属性。然而,FastAPI 的中间件为我提供了一个响应流,我不想过早地解析它。excludereturn_in_api=False

相反,我编写了一个装饰器,它.dict()使用适当的值调用路由处理程序的返回值exclude

问题

一个挑战是,每当添加新端点时,添加它们的人都必须记住包含此装饰器,否则字段会泄漏。

理想情况下,我想将此装饰器应用于每个路由,但通过中间件执行此操作似乎会破坏响应流。

python starlette pydantic fastapi

4
推荐指数
1
解决办法
4727
查看次数

标签 统计

fastapi ×1

pydantic ×1

python ×1

starlette ×1