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
相关产品推荐
相关产品推荐

