有誰知道為什么對我的燒瓶服務器的 PATCH 請求會回傳 400 錯誤?我正在發送 json 資料。POST 請求作業正常。
提前致謝!
@app.route('/pokedex/add/', methods=["POST", "PATCH"])
def add_pokemon():
conn = get_db_connection()
cur = conn.cursor()
if request.method =='PATCH':
try:
cur.execute("UPDATE pokedex_mon SET caught = True WHERE name=" request.json['name'])
conn.commit()
cur.close()
conn.close()
return jsonify(True)
except:
return jsonify(False)
else:
if (request.json['caught'] == True):
caught = True
else:
caught = False
try:
cur.execute('INSERT INTO pokedex_mon (name,description,image,seen,caught) VALUES (%s,%s,%s,%s,%s)', (request.json['name'], request.json['description'], request.json['image'], True, caught))
conn.commit()
cur.close()
conn.close()
return jsonify(True)
except:
return jsonify(False)
uj5u.com熱心網友回復:
我認為您在 @app.route 中撰寫了默認的“GET”方法。用 'POST' 和 'PATCH' 寫 'GET'。我不確定,但這可能是問題所在。
uj5u.com熱心網友回復:
你沒有給出堆疊跟蹤。我猜這行導致了一個錯誤:
cur.execute("UPDATE pokedex_mon SET caught = True WHERE name=" request.json['name'])
假設request.json['name']等于test,那么你的 sql 將是UPDATE pokedex_mon SET caught = True WHERE name=test。
name=test錯了,應該是name='test'。
順便說一句,你最好不要手動連接 sql 引數,最好的做法是使用parameterized queries.
uj5u.com熱心網友回復:
由于多種原因,您在 POST 中構建 sql 查詢的方式更好
檢查這是否解決了它:
cur.execute("UPDATE pokedex_mon SET caught = True WHERE name=%s", (request.json['name']),)
另外,為了更好地除錯它,我建議像這樣捕獲錯誤(如果有的話):
except Exception as e:
print(e)
你甚至可以 jsonify 并回傳錯誤,但我不建議這樣做,除非它真的對你的作業流程有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/459287.html
