5

次のように、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 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 を渡しています。

curl -H "Content-type: applicaiton/json" -X DELETE http://localhost:5000/location -d '{"id":3}'

try except ブロックが何らかの理由で失敗しています。問題が何であるかを検出できません。これをデバッグする方法はありますか?

4

1 に答える 1

3

変えたら

except (ValueError, KeyError, TypeError):
    resp = Response({"JSON Format Error."}, status=400, mimetype='application/json')
    return resp

except (ValueError, KeyError, TypeError) as error:
    print error
    resp = Response({"JSON Format Error."}, status=400, mimetype='application/json')
    return resp

あなたのエラーを見ることができます。

更新: エラーが見つかってよかったです! データベース接続をラップするほとんどのモジュールでは、次のようなことができると思います。

db.execute('SELECT * FROM awesome_table WHERE id=%s', data_id)

通常は、基本的な SQL インジェクション保護を提供します。

于 2012-11-13T03:53:26.347 に答える