You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:25:29