Flask后端+React前端部署Render后Get请求返回404求助
本地正常的React+Flask应用部署到Render后GET请求返回404
本地运行正常的React+Flask应用,部署到Render平台后所有GET请求返回404错误。即使硬编码后端API返回值,问题依然存在,网络请求显示已发起但始终提示“Not Found”。
相关代码信息
React前端请求代码
const fetchProducts = useCallback(async () => { try { let response; const headers = { 'Content-Type': 'application/json', // Set the Content-Type header }; if (searchQuery) { response = await axios.get(`${API_URI}/api/aggregated/matched/getall?page=${currentPage}&sort=${selectedSortOption}&query=${searchQuery}`, { headers }); } else { response = await axios.get(`${API_URI}/api/aggregated/cheapest/getall?page=${currentPage}&sort=${selectedSortOption}`, { headers }); } // 后续处理代码省略 } catch (error) { // 错误处理省略 } }, [searchQuery, currentPage, selectedSortOption]);
Flask后端路由代码
@all_cheapest_computers_blueprint.route('/cheapest/getall', methods=['GET']) def get_cheapest_options(): # 业务逻辑省略 return jsonify({"data": "test"})
Flask蓝图注册代码(app.py)
app.register_blueprint(all_cheapest_computers_blueprint, url_prefix='/api/aggregated')
后端日志
Aug 20 05:25:20 AM 127.0.0.1 - - [20/Aug/2023:02:25:20 +0000] "GET /api/aggregated/cheapest/getall?page=1&sort=ascendive_price HTTP/1.1" 404 207 "mybackenddomain/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
排查与解决方案
确认蓝图是否正确导入
检查app.py中是否已导入蓝图对应的模块,比如:from your_blueprint_module import all_cheapest_computers_blueprint仅注册蓝图但未导入模块,路由不会被加载。
检查Render启动命令
Render平台上Flask应用的启动命令需指向正确的app实例,例如:gunicorn app:app确保命令中的
app:app对应你的Flask实例(第一个app是文件名,第二个是实例名)。验证路由匹配
日志显示请求路径为/api/aggregated/cheapest/getall,与蓝图前缀+路由路径完全一致,需确认:- 蓝图注册代码是否在Flask app实例创建之后执行
- 没有其他全局路由或蓝图占用该路径
直接测试后端API
在浏览器或Postman中直接访问Render后端域名的/api/aggregated/cheapest/getall?page=1&sort=ascending_price,若仍返回404,可确定是后端路由配置问题;若正常返回,则检查前端API_URI是否拼接错误(比如末尾多了斜杠)。检查Flask环境配置
确保Render上已设置必要的环境变量,如FLASK_APP=app.py,避免因实例加载错误导致路由失效。
内容的提问来源于stack exchange,提问作者user15465584
相关产品推荐
相关产品推荐

