我想对在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