我正在尝试将多维数组作为JSON发送到我的Python后端。 该数组存储在画布上绘制的点,并将用于对其执行一些计算。我该如何编码数据?
我尝试在数组上使用函数JSON.stringify,但仍无法在后端获取数据。
后端功能,在本地主机端口5000上运行:
@app.route('/canvas-roi', methods=['POST'])
def canvasRoi():
print(request.body)
存储数据的数组并插入示例:
private points = [];
points.push([1, 2]);
points.push([3, 4]);
前端函数将数组作为JSON发送到后端:
onUpload(){
var output = {};
for(var i = 0; i<this.points.length; i++) output[i] = this.points[i];
this.http.post("http://localhost:5000/canvas-roi", JSON.stringify(output)).subscribe(res => {console.log(res);});
}
我希望后端接收JSON并在控制台中打印。但是,在后端,实际输出是
AttributeError:'Request'对象没有属性'body'
和
127.0.0.1--[05 / Jun / 2019 17:10:59]“ POST / canvas-roi HTTP / 1.1” 500-
在前端,错误消息是:
POST http://localhost:5000/canvas-roi 500(内部服务器错误)
我知道错误一定与我如何创建邮寄请求有关,但我不知道如何解决该问题。
答案 0 :(得分:1)
问题既与我创建帖子请求的方式有关,也与我尝试提取它的方式有关。以下代码解决了该问题:
后端功能:
@app.route('/canvas-roi', methods=['POST'])
def canvasRoi():
data = request.json
前端功能:
onUpload(){
let requestOptions = {headers: new HttpHeaders({'Content-Type': 'application/json'})};
this.http.post("http://localhost:5000/canvas-roi", this.points, requestOptions);
}
答案 1 :(得分:0)
您正在加载表单数据,但正在发送JSON。这与您的问题有关吗? How to receive json data using HTTP POST request in Django 1.6?