我的Flask API响应中的冗余服务器信息

问题描述 投票:0回答:1

我正在python Flask应用程序中编写API。

@app.route('/result', method=['GET'])
def result():
  data = {}
  data['age'] = 18
  data['name'] = 'Jack'
  return jsonify(result=data)

编辑:我使用Ajax来调用API,

$.ajax({
    url: "/result",
    type: "GET",
    dataType: "json",
    success: function (data) {
      data = eval(data);
      // other actions
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
    }
  }
)

为什么有时当我调用此API时,API响应主体中添加了一些冗余服务器信息,我无法将其解析为有效的json。喜欢,

预期结果:

{
  "result": {
    "age": 18,
    "name": "Jack"
  }
}

实际结果:

Content-Type: application/json
Content-Length: 187252
Server: Werkzeug/0.12.2 Python/2.7.14
{"result":{"age":18, "name":"Jack"}}

出于什么原因会发生这种情况,有人可以提供一些可能的想法吗

python-2.7 rest flask
1个回答
0
投票

只需要返回json数据和前端告诉ajax contentType是json!

return jsonify(data)

这是我的例子:

后端

@main.route('/api/data')
def foo():
    return jsonify({"bar": True})

前端(javascript ajax)

function ajax(method, url, data, callback) {
    var obj = {
        type: method,
        url: window.location.origin + url,
        contentType: "application/json; charset=utf-8",
        success: function (a) {
            callback(a);
        }, error: function (err) {
            if ((err.responseJSON).constructor == Object)
                Object.keys(err.responseJSON).length || (err.responseJSON = {'error': err.statusText});
            else if ((err.responseJSON).constructor == Array)
                err.responseJSON.length || (err.responseJSON = {'error': err.statusText});
            callback(err.responseJSON);
        }
    };
    data && (obj.data = JSON.stringify(data));
    $.ajax(obj);
}


ajax('GET', '/api/data', null, function (a) {
    a.error ? $.growl.error({message: a.error}) : console.log(a);    
});

浏览器控制台将看到{"bar": true}

© www.soinside.com 2019 - 2024. All rights reserved.