Flask API路由/api/recommendations/<user_id>返回404错误求助
Flask路由404错误排查与解决
核心原因
你的路由定义中,参数的<和>被HTML转义成了<和>,Flask无法识别这种格式的路由参数,导致请求URL与定义的路由完全不匹配,直接返回404错误。
对应代码中的错误行:
@app.route('/api/recommendations/<user_id>', methods=['GET'])
Flask要求路由参数必须用原始的<参数名>格式,转义后的符号会被当作URL路径的一部分,而非参数占位符。
解决步骤
- 修正路由定义
将转义后的符号替换为原始的<>,修改后的代码:
@app.route('/api/recommendations/<user_id>', methods=['GET'])
验证请求URL格式
确保请求的URL符合路由规则,例如:http://localhost:8080/api/recommendations/your_actual_user_id
将your_actual_user_id替换为Firestore中存在的真实用户ID。确认应用运行状态
检查Flask启动日志,确认应用确实运行在localhost:8080端口,日志中会显示类似Running on http://localhost:8080的输出,避免端口冲突或应用未正常启动。
额外检查项
- 如果用户ID包含斜杠、点号等特殊字符,需要在路由参数中指定转换器,例如
<path:user_id>(允许路径包含斜杠)或<string:user_id>(默认规则,不允许斜杠)。 - 可以在Firebase初始化代码块添加异常捕获,避免初始化失败导致路由未加载:
try: cred = credentials.Certificate(r"firebase/connection") firebase_admin.initialize_app(cred) db = firestore.client() except Exception as e: app.logger.error(f"Firebase init failed: {str(e)}")
内容的提问来源于stack exchange,提问作者Harsh Bhat
相关产品推荐
相关产品推荐

