我有一个带有此端点的Flask API:
@app.route('/classify/', methods=['POST'])
def classify():
data = request.get_json()
当我使用python发布请求时,eveything很好。
但是当我使用Postman时,我得到了:
<class 'werkzeug.exceptions.BadRequest'> : 400: Bad Request
我同时发送相同的Json(我将其复制/粘贴以确保)。我相信这个问题是由我的json中的一些“\ t”引起的,它们是由python而不是Postman转义的。
有没有办法检索原始json,并在应用程序中处理它(逃避需要转义的内容)?还是另一种获得json的方式?
编辑:这是一个与你建议重复的问题不同的问题,因为你的建议使用get_json,这就是我的问题。
答案 0 :(得分:5)
好的,事实证明你可以替换:
data = request.get_json(
)
通过:
data = json.loads(request.data, strict=False) # strict = False allow for escaped char
requestspata包含字符串格式的json,因此您可以处理需要转义的字符。
答案 1 :(得分:1)
如果您的数据可能为空或提出了错误的请求,请使用request.data
而不是request.get_json()
!
答案 2 :(得分:0)
关于ajax和flask的所有错误都从python文件模板发送数据。
接收ajax json的所有数据。
data = request.get_json("")
print(data)
return "success!"
Send data in ajax json.
$(document).on('click','#texthide',function(){
var text = $("#textVal").val();
var font = $("#font_text").val();
var color = $("#color_text").val();
var start_text = $("#start_text").val();
var end_text = $("#end_text").val();
var vid_id = new_d
console.log(text);
$.ajax({
url: '/videos/test_text',
type: 'POST',
contentType: 'application/json; charset=utf-8',
datatype: "json",
data: JSON.stringify(
{ text: $("#textVal").val(),
font: $("#font_text").val(),
color: $("#color_text").val(),
start_text: $("#start_text").val(),
end_text: $("#end_text").val(),
video_id: new_d
})
});
});