我想對在Flask上運行的我的RESTful API使用類型爲'GET'的jQuery ajax調用。在我的請求中,我想將一些數據作爲JSON發佈。將json嵌入到jquery ajax GET請求
我正在爲POST請求做同樣的事情,他們像魅力一樣工作。但是使用GET Flask會給我提供400個錯誤,並且深入瞭解它,看起來JSON在路上({%22email%22:%[email protected]%22})部分被URIEncoded編碼。
我試過使用decodeURIComponent,因爲我是JSON.stringifying json的ajax數據參數,但沒有區別。
sessiontoken = "123abc";
jsonData = {"email": email};
$.ajax({
type: 'GET',
crossDomain: true,
url: 'http://someserver/sessions/' + sessiontoken,
dataType: 'json',
processData: false, //added this to see if it helps, it didn't
contentType: "application/json",
async: false,
data: JSON.stringify(jsonData),
success: function(data){
//I'd be happy
},
error: function(data){
//This is where I get as my backend throws a 400 on me due to the screwed up json
}
});
這使我瘋狂,因爲我似乎無法在地球上找到任何人有同樣的問題。我以前一直在謾罵,以前從未面對過這種愚蠢的事情。
編輯:好吧,好像我需要放棄我的目標,只是傳遞任何參數作爲查詢字符串,而不是嘗試將它們添加到請求正文。我想這裏沒有什麼錯,例如這裏討論的:REST API Best practices: Where to put parameters?
這種方式缺乏URL清潔。電子郵件地址的字母會使您的URL變得混亂,因此不太RESTful。而且,解析URL代碼在這裏沒有任何關係,在大多數框架中這通常是透明的,Flask不應該是例外 – Alexander
沒錯,只是沒有想過。我編輯了一個答案。 – Arkady
@Alexander,REST的目標之一是查詢參數中的關鍵值對,這就是爲什麼我認爲有可能在其中包含JSON。或者我錯了?至少我在某處看過它。 – Arkady