Flask API 路由返回 404 错误 API路由定义:
我在 Flask 应用程序中定义了一个 API 路径 /api/recommendations/
数据准备好后,该函数会返回一个 JSON 响应,其中包含用户 ID 和推荐的冥想名称。
我正在开发一个 Flask 应用程序,该应用程序具有 API 路由,用于根据 Firestore 中存储的用户数据检索推荐。但是,当我尝试访问 API 路由时,收到 404 错误,指示找不到该路由。这是我的 Flask 应用程序代码:
from flask import Flask, jsonify
from flask_cors import CORS
import firebase_admin
from firebase_admin import credentials, firestore
import numpy as np
import spacy
app = Flask(__name__)
CORS(app)
@app.route('/')
def hello_world():
return 'Hello, World!'
cred = credentials.Certificate(r"firebase/connection")
firebase_admin.initialize_app(cred)
db = firestore.client()
nlp = spacy.load("en_core_web_md")
@app.route('/api/recommendations/<user_id>', methods=['GET'])
def get_user_data(user_id):
try:
stats_ref = db.collection('stats').document(user_id)
stats_data = stats_ref.get().to_dict()
minutes = stats_data.get('Minutes', 0)
sessions = stats_data.get('Sessions', 0)
forms_ref = db.collection('form').document(user_id)
forms_data = forms_ref.get().to_dict()
answers = forms_data.get('answers', [])
user_query = f"Minutes: {minutes} Sessions: {sessions} {' '.join(answers)}"
user_embedding = nlp(user_query).vector
meditations_ref = db.collection('meditations')
meditations_data = [doc.to_dict() for doc in meditations_ref.stream()]
meditations_embeddings = []
for meditation in meditations_data:
meditation_text = f"{meditation['name']} {meditation['tag']} {meditation['duration']}"
meditation_embedding = nlp(meditation_text).vector
meditations_embeddings.append(meditation_embedding)
meditations_embeddings = np.array(meditations_embeddings)
similarities = np.dot(meditations_embeddings, user_embedding) / (
np.linalg.norm(meditations_embeddings, axis=1) * np.linalg.norm(user_embedding))
top_indices = np.argsort(similarities)[::-1][:3]
similar_meditations_names = [meditations_data[i]['name'] for i in top_indices]
return jsonify({
'user_id': user_id,
'similar_meditations_names': similar_meditations_names
})
except Exception as e:
app.logger.error(f"Error occurred: {str(e)}")
return jsonify({'error': 'Internal Server Error'}), 500
if __name__ == '__main__':
app.config['ENV'] = 'development'
app.config['DEBUG'] = True
app.run(host='localhost', port=8080)
我尝试使用 Postman 从前端手动访问 API 路由 (/api/recommendations/
在Postman中输入URL时,是否包含主机和端口?
例如)http://localhost:8080/api/recommendations/