仪表调用python api

时间:2015-09-16 14:21:34

标签: python-2.7 meteor flask

这是meteor功能,我们无法从Meteor调用REST API

'toScaleInstance': function(){
     var Response = HTTP.call("PUT", "0.0.0.0:8765/service/api/v1",
              {
              headers:{"content-type":"application/json"},
              data:{
                    "num":"1", 
                    "project":"projectname"
                   }
              }); 
     console.log(Response);
}

它抛出“没有JSON对象可以解码”,api是用python编写的。使用curl时,相同的api工作正常。

curl --dump-header - -H "Content-Type: application/json" -X PUT --data "{\"num\":\"1\", \"project\":\"projectname\"}" 0.0.0.0:8765/service/api/v1/

如果您需要更多信息,请与我们联系。谢谢

python代码

@app.route("/api/v1/", methods=['PUT'])
def scale():
    """
    docker-compose scale
    """
    req = loads(request.data)
    name = req['project']
    num = req['num']
    """
    some logic
    """
    return jsonify(command='scale')

注意:我们在python中打印request.data,并在从Meteor调用时打印null,并在通过curl请求时打印正确的数据

1 个答案:

答案 0 :(得分:0)

我不认为你的python代码正在返回任何json。请尝试以下方法:

from flask import jsonify

@app.route('/api/v1', methods=['PUT'])
def scale():
  " docker-compose scale "
  # your logic here
  return jsonify(return_value)