WSL2中FastAPI仅根路由可用,非根路由返回404的问题排查
解决WSL2中FastAPI仅根路由可用的问题
针对你遇到的非根路由返回{"detail":"Not Found"}、且文档页面不显示这些路由的问题,以下是直接的排查和解决步骤:
1. 确保运行的是最新代码
旧进程缓存是常见诱因,先彻底终止相关进程再重启:
# WSL中杀掉所有uvicorn进程 pkill -f uvicorn # 若上述命令无效,杀掉所有Python进程 pkill python3
重新运行脚本:
python your_script_name.py
如果用命令行启动uvicorn,建议添加--reload参数,代码修改后会自动重载,避免缓存问题:
uvicorn main:app --host 127.0.0.1 --port 8000 --reload
2. 检查文件存储位置
如果代码放在Windows挂载的文件系统(如/mnt/c/、/mnt/d/路径下),WSL2与Windows的文件同步可能存在延迟,导致修改后的代码未被Python读取。
将代码迁移到WSL本地文件系统(如~/fastapi-project/),再重新运行测试。
3. 验证路由是否被正确注册
在代码中添加路由打印,确认路由是否成功注册:
修改你的代码,在uvicorn.run之前加入:
# 打印所有已注册的路由路径 print("已注册路由:", [route.path for route in app.routes])
运行后查看终端输出:
- 若输出包含
/home和/services,说明路由注册正常; - 若未包含,检查代码是否正确保存,或是否有其他代码覆盖了
app实例。
4. 确认端口转发与访问地址
虽然根路由可访问,仍可再确认WSL2的端口状态:
在WSL中运行netstat -tulpn | grep 8000,确认uvicorn确实监听在127.0.0.1:8000;然后在Windows或WSL内用curl测试,确保访问的地址和端口无误。
内容的提问来源于stack exchange,提问作者Cavein Muthama
相关产品推荐
相关产品推荐

