Python Flask应用POST接口请求返回404错误排查求助
问题原因及解决方案
直接导致404错误的核心问题有2个:
- 请求URL缺少HTTP协议头
你在Postman填写的地址127.0.0.1:5000/samples/?NODE_NO_data=1&BLOCK_NAME_data=Machine&BLOCK_TYPE_data=Vertical没有添加http://前缀,Postman无法识别为标准HTTP请求,直接返回404。修正后的基础请求地址应为http://127.0.0.1:5000/samples。 - 路由匹配不一致
你注册的接口路由是/samples,但请求地址末尾多了斜杠/samples/,Flask默认开启严格路由匹配,不带斜杠和带斜杠是两个不同的路由,就会触发404。如果需要兼容带斜杠的请求,可以在初始化app后添加一行配置:
app.url_map.strict_slashes = False
补充其他潜在问题
解决404错误后你还会遇到其他运行报错,建议提前修正:
pandas.append方法已在pandas 2.0+版本中废弃,替换为pd.concat写法:
# 替换原有data = data.append(new_data, ignore_index=True) data = pd.concat([data, new_data], ignore_index=True)
to_sql方法参数缺失,一是缺少数据库连接参数con,二是缺少if_exists参数(默认值为fail,表已存在时会直接抛出错误),修改为:
data.to_sql('DBLIST_DATA', con=engine, index=False, if_exists='replace')
注意:这种全表读取后覆盖写入的方式性能极低,且并发场景下会出现数据丢失,生产环境建议直接用SQL insert语句写入单条数据,不要操作全表。
- POST请求建议将参数放在请求体(form-data或JSON格式)传输,不要放在URL查询参数中,符合HTTP规范的同时也能避免特殊字符转义问题,
reqparse可以自动识别两种位置的参数不需要修改现有解析代码。
内容的提问来源于stack exchange,提问作者Aby_g
相关产品推荐
相关产品推荐

