返回
FastAPI OpenAPI 文档中隐藏 Pydantic 模型指南
python
2024-03-08 20:21:40
在 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 社区寻求支持。