我已經解決了我的問題,但我想知道發生了什麼問題,因此我可以在將來處理它。我正在解碼傳入的JSON以用於我的Flask應用程序。使用Flask和Angular加載JSON的錯誤
發送它在角的代碼:
$http.post("/login", JSON.stringify($scope.loginForm))
.success(function(data, status, headers, config) {
console.log(data);
})
.error(function(data, status, headers, config) {
console.log("Submitting form failed!");
});
重要地注意到,請求類型被設置爲應用/ JSON較早起來,用
$http.defaults.headers.post["Content-Type"] = "application/json";
接收的代碼它在燒瓶內:
data = request.get_json()
email_address = data.get("email_address")
password = data.get("password")
試圖以這種方式加載它會返回一個錯誤400,但任何其他方式都會導致一些非常奇怪的問題。例如:
return json.dumps(request.get_json())
將記錄{ 「密碼」: 「密碼」, 「EMAIL_ADDRESS」: 「[email protected]」}在控制檯,而是試圖做到這一點:
data = request.get_json()
email_address = data.get("email_address")
password = data.get("password")
除了我不強制它之外,它和第一塊代碼之間沒有什麼區別,我收到異常「ValueError:需要多個值才能解包」。這意味着解壓縮沒有兩個值。
然而,他們都單獨工作。如果我執行上述請求並省略上面的data.get()行中的任何一個,則另一個將工作。
我的設置怎麼樣導致我的JSON對象第一次被分解訪問?
我通過使用request.json而不是request.get_json()來解決這個問題,但是由於request.json被棄用,這是相當重要的,我知道如何在將來解決這個問題。任何指針將不勝感激!