问题描述
在 FastAPI 开发过程中,如果你修改了代码(比如新增或修改了接口),但重新运行 fastapi dev main.py
后发现 仍然显示旧的接口
原因及解决方案
-
缓存问题(最常见)
FastAPI 的开发服务器(
uvicorn
)有时会缓存旧代码。
解决方法:-
强制重启开发服务器:
按Ctrl+C
完全终止当前服务,然后重新运行:fastapi dev main.py
-
确保终端工作目录正确:
确认你运行的路径和main.py
所在路径一致(比如在项目根目录下运行)。
-
-
文件未正确保存
解决方法:
- 检查你的代码文件是否已保存(IDE 如 VS Code 可能需要手动
Ctrl+S
)。 - 在终端运行
ls
或dir
确认文件内容是最新的。
- 检查你的代码文件是否已保存(IDE 如 VS Code 可能需要手动
-
浏览器缓存
即使后端更新了,浏览器可能缓存了旧的 OpenAPI 文档(Swagger UI)。
解决方法:- 强制刷新浏览器:
Ctrl+F5
(清除缓存刷新)。 - 尝试在无痕模式下访问
http://127.0.0.1:8000/docs
。
- 强制刷新浏览器:
-
端口冲突
旧的服务可能没有完全退出,仍然占用端口。
解决方法:-
终止所有 Python 进程:
pkill -f "uvicorn" # Linux/Mac taskkill /f /im python.exe # Windows
-
重新启动服务。
-
-
代码未正确加载
确保你的代码修改已正确应用到 FastAPI 实例。
示例排查:-
在
main.py
中添加一个明显的打印语句测试:print("服务器已重启!") # 重启后观察终端是否输出
-
如果没输出,说明修改未生效。
-
-
使用
--reload
确保热重载如果直接运行
uvicorn
(而非fastapi dev
),需显式启用热重载:uvicorn main:app --reload
fastapi dev
默认会启用--reload
,但手动运行时容易遗漏。