返回

FastAPI OpenAPI 文档中隐藏 Pydantic 模型指南

python

在 FastAPI OpenAPI 文档中隐藏 Pydantic 模型的终极指南

问题

在 FastAPI 应用程序中,Pydantic 模型有时需要被隐藏,以防止它们出现在 OpenAPI 文档中。然而,许多开发人员发现,尽管设置了 "include_in_schema",模型仍然会出现在文档中。

解决方法

要成功隐藏 Pydantic 模型,请执行以下步骤:

1. 修改 Pydantic 模型

  • 在模型的 "Config" 类中添加以下代码:
json_schema_extra = {
    "include_in_schema": False,
}

2. 检查类型注解

  • 确保模型的属性具有正确的类型注解。例如:
from pydantic import BaseModel, Field

class CardBalanceRequest(BaseModel):
    card_no: str = Field(..., example="1234567890123456")
    client_id: str = Field(..., example="1234")

    class Config:
        json_schema_extra = {
            "include_in_schema": False,
        }

3. 重新启动 FastAPI 应用程序

  • 重新启动应用程序以重新加载模型和 OpenAPI 文档。

常见陷阱

1. 属性类型注解错误

  • 确保模型的属性具有正确的类型注解。

2. 未设置 "json_schema_extra"

  • 确认已将 "json_schema_extra" 设置为上述代码段所示。

3. 文档缓缓存

  • FastAPI 缓缓存 OpenAPI 文档,因此在更改后可能需要清除缓存才能看到更新的文档。

结论

遵循这些步骤可以成功地将 Pydantic 模型隐藏在 FastAPI OpenAPI 文档中。请记住仔细检查类型注解,并确保正确设置 "json_schema_extra"。

常见问题解答

1. 为什么隐藏 Pydantic 模型很重要?

  • 隐藏敏感或不需要在 OpenAPI 文档中公开的模型。

2. 是否可以有选择地隐藏某些属性?

  • 是的,通过为特定属性设置 "include_in_schema" 为 False 来实现。

3. "json_schema_extra" 是什么?

  • FastAPI 用于指定额外 OpenAPI 文档选项的字典。

4. 如何清除 FastAPI 缓存?

  • 使用 "fastapi.staticfiles.StaticFiles" 类的 "clear_caches()" 方法。

5. 如果我的模型仍然出现在 OpenAPI 文档中,怎么办?

  • 检查是否存在以上陷阱,或向 FastAPI 社区寻求支持。