FastAPI端点无法访问求助:Swagger UI无可用测试端点
问题排查与解决方案
核心问题分析
你的情况核心在于OpenAPI文档生成失败,导致Swagger UI无法显示端点,同时根路径访问异常。最可能的原因是Cancer_Severity模型的定义或导入存在问题——FastAPI依赖Pydantic模型生成接口Schema,一旦模型不符合要求,会直接影响接口文档的生成和路由的正常识别。
分步修复方案
1. 验证Cancer_Severity模型定义
打开BaseModel.py,确保模型正确继承自Pydantic的BaseModel,且字段定义与代码中读取的键完全匹配:
# BaseModel.py 正确示例 from pydantic import BaseModel class Cancer_Severity(BaseModel): Age: int Shape: int Margin: int Density: int
- 必须明确继承
BaseModel,否则FastAPI无法将其识别为请求参数模型 - 字段名大小写敏感,要和
predict函数中data['Age']等读取的键完全一致
2. 确认服务启动方式
确保通过以下两种标准方式之一启动服务:
- 直接运行脚本:
python your_script_name.py - 使用uvicorn命令启动:
uvicorn your_script_name:app --host 127.0.0.1 --port 8000 --reload
避免使用未正确加载app实例的自定义启动逻辑。
3. 修复根路径访问异常
初始化FastAPI时显式指定文档元数据,确保OpenAPI Schema正常生成:
app = FastAPI(title="癌症严重程度预测API", version="1.0.0")
重启服务后,访问http://127.0.0.1:8000/应该能看到FastAPI默认欢迎信息,而非“details not found”。
4. 验证端点显示
完成上述步骤后,重新访问http://127.0.0.1:8000/docs,Swagger UI应显示三个端点:
GET /:欢迎信息接口GET /Welcome:带用户名参数的欢迎接口POST /predict:预测接口(会自动显示HTTP Basic认证入口和请求参数表单)
5. 测试认证与预测功能
在Swagger UI中测试POST /predict接口:
- 点击
Authorize按钮,输入用户名admin和密码password完成认证 - 在请求体中填入符合规则的参数(例如
Age: 50, Shape: 2, Margin: 3, Density: 1) - 点击
Execute即可获取预测结果
额外排查点
如果以上步骤无效,检查以下内容:
- 确认
new_mammo_model.pkl文件路径正确,可在加载模型后添加print("模型加载成功")验证是否静默报错 - 升级依赖包确保版本兼容:
pip install --upgrade fastapi pydantic uvicorn
内容的提问来源于stack exchange,提问作者Victor Imah
相关产品推荐
相关产品推荐

