You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Flask搭配Postman调用POST接口新增记录出现404错误求助

问题排查及解决方案

问题1:404错误核心原因

路由注册代码漏写装饰器标识@,正确的Flask路由注册写法为@app.route(),你当前代码写的是app.route(),没有@前缀的话该路由不会被Flask应用识别注册,所以访问时返回404。

问题2:后续运行必现错误

  • 模型实例创建语法错误:你构造new_data的代码末尾多了一个逗号,会导致new_data被识别为包含Cafe实例的元组,而非Cafe模型实例本身,后续数据库操作会报错。
  • 数据库添加对象错误:db.session.add()需要传入SQLAlchemy模型实例,你当前代码传入的是jsonify()生成的响应对象,逻辑完全错误,不需要构造new_cafe_json这个变量,直接添加你创建的Cafe实例即可。
  • 布尔参数转换缺少容错:直接对request.form.get()的结果做int()转换,如果前端对应参数为空或者非数字格式,会直接抛出类型错误,建议增加默认值兜底。
修正后的完整代码
# 注意开头加了@装饰器标识
@app.route('/add_cafe', methods=['POST', 'GET'])
def add_cafe():
    new_data = Cafe(
        name=request.form.get("name"),
        map_url=request.form.get("map_url"),
        img_url=request.form.get("img_url"),
        location=request.form.get("location"),
        # 增加默认值0,避免空值转换报错
        has_sockets=bool(int(request.form.get("has_sockets", 0))),
        has_toilet=bool(int(request.form.get("has_toilet", 0))),
        has_wifi=bool(int(request.form.get("has_wifi", 0))),
        can_take_calls=bool(int(request.form.get("can_take_calls", 0))),
        seats=request.form.get("seats"),
        coffee_price=request.form.get("coffee_price")
    )
    # 直接添加模型实例到数据库会话
    db.session.add(new_data)
    db.session.commit()
    return jsonify(result={"Success": "Added successfully"})

测试注意事项

调用接口时确认请求地址的路径和路由定义完全一致,为/add_cafe,不要多写斜杠或者出现拼写错误。

内容的提问来源于stack exchange,提问作者k6ashok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:48:00