FastAPI通过OpenAPI Docs访问时出现内部服务器错误求助
问题解决方案
你的问题确实出在Pydantic模型的字段定义上,尤其是ComponentList和ComponentListResponse里的几处错误,导致Swagger UI解析OpenAPI文档时触发内部错误,以下是具体修正步骤:
1. 修正ComponentListResponse模型
原模型存在3处错误:
tag_info字段缺少类型注解,直接赋值类会导致Pydantic无法正确识别字段类型component_notes的类型注解和默认值不匹配,声明为List[dict]但默认值写了List[ComponentNotes]- (可选)
heath_status疑似拼写错误,应该是health_status,如果是接口约定的别名可以忽略,但建议统一命名
修正后的代码:
class ComponentListResponse(BaseModel): """ This model is to list the component """ # 添加类型注解,若字段可选则加Optional和默认值 tag_info: ComponentSummaryTagInfoResp # 若可选改为 tag_info: Optional[ComponentSummaryTagInfoResp] = None heath_status: Optional[str] = Field(alias="healthStatus") stage: Optional[str] = Field(alias="stage") # 修正类型注解为List[ComponentNotes],默认值设为空列表 component_notes: List[ComponentNotes] = []
2. 修正ComponentList模型
原data: List[dict] = List[ComponentListResponse]完全错误:
- 类型注解和实际期望的类型矛盾(声明是List[dict],但实际要返回List[ComponentListResponse])
- 错误地将
List[ComponentListResponse]作为默认值,正确的默认值应该是空列表[],或者不指定默认值(若字段必填)
修正后的代码:
class ComponentList(BaseModel): """ This is the base model for component List """ # 正确声明类型为List[ComponentListResponse],可选添加默认空列表 data: List[ComponentListResponse] = []
3. 验证修正效果
修正后,Swagger UI会正确解析Pydantic模型的结构,生成符合预期的OpenAPI文档,调用接口时也不会再触发内部服务器错误。另外,浏览器访问正常是因为FastAPI在返回数据时做了宽松的类型转换,但Swagger UI需要严格的模型定义来生成文档,所以会暴露这类错误。
内容的提问来源于stack exchange,提问作者burning
相关产品推荐
相关产品推荐

