Flask 服务器显示 404 错误。即使路线已明确定义

问题描述 投票:0回答:1

Flask API 路由返回 404 错误 API路由定义:

我在 Flask 应用程序中定义了一个 API 路径 /api/recommendations/ 来检索特定用户的冥想建议。 路由处理函数 get_user_data(user_id) 查询 Firestore 以获取用户统计信息和表单数据,使用 spaCy 计算用户嵌入,并计算与冥想嵌入的相似度。

数据准备好后,该函数会返回一个 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/),但我始终收到 404 错误。可能是什么原因导致此问题?我该如何解决?

python flask
1个回答
0
投票

在Postman中输入URL时,是否包含主机和端口?

例如)http://localhost:8080/api/recommendations/

© www.soinside.com 2019 - 2024. All rights reserved.