Python 尝试删除烧瓶中的JSON错误
我正在尝试向API添加一个DELETE方法,如下所示:Python 尝试删除烧瓶中的JSON错误,python,json,http,flask,Python,Json,Http,Flask,我正在尝试向API添加一个DELETE方法,如下所示: if request.method == 'DELETE': if request.headers['Content-Type'] == 'application/json': try: data = json.loads(request.data) data_id = data['id'] db.execute('DELETE FROM p
if request.method == 'DELETE':
if request.headers['Content-Type'] == 'application/json':
try:
data = json.loads(request.data)
data_id = data['id']
db.execute('DELETE FROM places WHERE id=' + data_id)
db.commit()
resp = Response({"Delete Success!"}, status=200, mimetype='application/json')
return resp
except (ValueError, KeyError, TypeError):
resp = Response({"JSON Format Error."}, status=400, mimetype='application/json')
return resp
我正在通过以下步骤:
curl -H "Content-type: applicaiton/json" -X DELETE http://localhost:5000/location -d '{"id":3}'
由于某种原因,try-except块失败。我无法发现问题所在。你知道我如何调试这个吗?如果你改变了
except (ValueError, KeyError, TypeError):
resp = Response({"JSON Format Error."}, status=400, mimetype='application/json')
return resp
到
您将能够看到您的错误
更新:我很高兴你发现了你的错误!我认为大多数包装数据库连接的模块都允许您执行以下操作:
db.execute('SELECT * FROM awesome_table WHERE id=%s', data_id)
它们通常会提供一些基本的SQL注入保护。您是否看到出现异常?另外,如果没有ID代码> DATAYID 的项目,您可能会考虑返回404而不是400的返回错误400,因此我认为正在引发异常。谢谢!如果有人稍后会看到这一点,有一点是肯定的:如果我正在开发一个只支持JSON的API,那么Flask中的print实际上不会在任何地方打印它。我使用return repr(error)查找我的错误。我的错误在db.execute中,连接了str和int对象。
db.execute('SELECT * FROM awesome_table WHERE id=%s', data_id)