如何将变量分配给API的字符串响应?

时间:2019-02-09 19:09:01

标签: python node.js json rest

我正在向Python Flask API发送发布请求。我返回200,并且响应的主体正确记录在控制台中。但是,当我尝试将其传递给“响应”变量以存储它未分配的变量时。

我尝试记录响应变量,并查看实际传递给它的内容。如果我尝试在请求调用中将其记录到控制台,则表明它成功包含一个字符串。但是,当我将其记录到请求之外的控制台时,它显示为未定义吗?

这是我的Node.js进行的呼叫

function handleMessage(sender_psid, received_message) {

let response;

request({
  "uri": "http://localhost:8090/givenMessage",
  "method": "POST",
  "json": received_message
}, (err, res, body) => {
  if (!err) {
    console.log('message sent to python!')
    console.log(typeof body)
    var string = JSON.stringify(body);
    var objectValue = JSON.parse(string);
    response = body; //parse the json body to string keep body in
  } else {
    console.error("Unable to send message to python:" + err);
  }
});


// Check if the message contains text
/*if (received_message.text) {    

  // Create the payload for a basic text message
  response = {
    "text": `You sent the message: "${received_message.text}".`
  }
}  */

// Sends the response message
callSendAPI(sender_psid, response);    
}

这是我的python后处理程序

from flask import Flask
from flask import request

app = Flask(__name__) #create the app server to recieve post

@app.route('/givenMessage', methods = ['POST'])
def postJsonHandler():
    print (request.is_json)
    content = request.get_json()
    print (content)
    return 'JSON posted'

 app.run(host = '0.0.0.0', port = 8090)

现在,当我将响应变量传递给callSendAPI方法时,它只是未定义的。我希望它在我的python post调用中有字符串输出“ JSON posted”

1 个答案:

答案 0 :(得分:0)

对不起,我回答了。发布请求很慢,因此响应变量没有时间分配。它是异步调用的。我将方法放在if语句中,以等待发布响应