鲁班大王智商520 2026-03-19 09:50 采纳率: 0%
浏览 5

flask编码用postman发送请求无法连接

用falsk编写基于数据库的授权代码后,用postman发送请求到相应地址显示404notfound,根据AI的提示修改后还是没有解决

img

img


代码是

img

img


求帮忙解答

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-03-19 10:05
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你遇到的问题是:使用 Flask 编写的基于数据库的授权代码,在 Postman 中发送请求时返回 404 Not Found 错误。 这表明你的 Flask 应用没有正确识别或处理该路由,或者你可能在 Postman 中配置了错误的 URL。


    ✅ 问题分析

    1. URL 路由未正确定义

    Flask 的路由(@app.route())需要与你在 Postman 中发送的 URL 完全匹配。例如,如果你定义的是 /login,但你在 Postman 中访问的是 /Login,就会导致 404。

    2. 请求方法不匹配

    Flask 的 @app.route() 默认只接受 GET 请求。如果你希望接收 POST 请求,必须指定 methods=['POST']

    3. 应用未运行或端口被占用

    如果 Flask 应用没有启动,或者端口被其他程序占用,Postman 会无法连接到服务。

    4. 数据库连接失败

    虽然这不会直接导致 404,但如果数据库连接失败,可能会导致某些逻辑错误,间接影响路由的执行。


    🔍 如何排查和解决?

    ✅ 步骤一:检查 Flask 路由是否正确

    @app.route('/login', methods=['POST'])
    def login():
        # 登录逻辑
        return "Login successful"
    
    • 确保你访问的是 http://localhost:5000/login
    • 检查是否使用了正确的 HTTP 方法(POST)。

    ✅ 步骤二:确保 Flask 应用正在运行

    在终端中运行以下命令:

    flask run
    

    或者手动运行:

    python app.py
    

    注意:确保你所在的目录是 Flask 应用的根目录(包含 app.py__init__.py 文件)。


    ✅ 步骤三:检查 Postman 配置

    • URL: http://localhost:5000/your_route
    • Method: 选择 POST
    • Body: 选择 JSON 格式,并填写你的登录数据(如 username 和 password)

    ✅ 步骤四:添加调试信息

    在 Flask 应用中添加日志输出,确认请求是否到达:

    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/login', methods=['POST'])
    def login():
        print("Received POST request to /login")
        data = request.get_json()
        print("Received data:", data)
        # 数据库验证逻辑
        return jsonify({"message": "Login successful"}), 200
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    ✅ 步骤五:检查数据库连接

    如果你使用的是 SQLAlchemy 或其他数据库模块,请确保连接字符串正确,并且数据库正在运行。

    from flask_sqlalchemy import SQLAlchemy
    
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
    db = SQLAlchemy(app)
    

    如果数据库文件不存在,Flask 会自动创建它,但你需要确保路径正确。


    🛠️ 示例完整代码

    from flask import Flask, request, jsonify
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
    db = SQLAlchemy(app)
    
    # 用户模型
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        username = db.Column(db.String(80), unique=True, nullable=False)
        password = db.Column(db.String(120), nullable=False)
    
    # 创建数据库
    with app.app_context():
        db.create_all()
    
    @app.route('/login', methods=['POST'])
    def login():
        data = request.get_json()
        username = data.get('username')
        password = data.get('password')
    
        user = User.query.filter_by(username=username).first()
        if user and user.password == password:
            return jsonify({"message": "Login successful"}), 200
        else:
            return jsonify({"message": "Invalid credentials"}), 401
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    🧪 测试步骤(使用 Postman)

    1. 打开 Postman。
    2. 设置 URL 为 http://localhost:5000/login
    3. 选择 POST 方法。
    4. 在 Body 选项卡中,选择 JSON
    5. 输入如下 JSON 数据:
    {
      "username": "testuser",
      "password": "testpass"
    }
    
    1. 点击 Send。

    ⚠️ 常见错误总结

    | 问题 | 解决方案 | |------|----------| | 404 Not Found | 检查路由名称和 URL 是否完全一致 | | 请求方法错误 | 添加 methods=['POST'] | | 应用未运行 | 确保 flask runpython app.py 正确执行 | | 数据库连接失败 | 检查 SQLALCHEMY_DATABASE_URI 是否正确 | | 无响应 | 添加调试打印或设置 debug=True |


    ✅ 最终建议

    请提供你的完整代码片段,包括 Flask 路由、数据库配置和 Postman 的请求截图,这样我可以更准确地帮助你定位问题。

    如果你愿意分享代码,我会帮你逐行分析并指出具体错误所在。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月19日