javascript - 如何从 unirest Nodejs POST 调用获取响应?

标签 javascript node.js unirest

我使用以下代码示例来调用返回访问 token 的 API。

var responsedata = '';

unirest.post('http://sandbox.com/api/getToken')
  .headers({'Content-Type': 'application/x-www-form-urlencoded'})
  .send('apiKey=xewsdw232')
  .send('username=theuser')
  .end(function (response) {

    console.log(response.body);
    responsedata = response.body;
    
    
  });

console.log(responsedata);

Response

{ data: { token: 'JhbGciOiJIUzI1NiJ9',transID:'00582',errorCode: '00',errorMessage: '' } }

我确实收到了登录到控制台的响应,但无法将其分配给一个变量,以便我可以在调用函数之外使用它。我正在努力理解回调在 javascript 中的工作原理。

最佳答案

HTTP 请求本质上是异步的。您不会立即得到响应,这意味着 javascript 不会等待响应,而是继续执行,并且每当返回响应时,就会调用回调。

如果您想返回此响应,请将此代码封装在函数中并返回已解决的 promise 。

function getToken() {
  return new Promise((resolve, reject) => {
    unirest.post('http://sandbox.com/api/getToken')
      .headers({
        'Content-Type': 'application/x-www-form-urlencoded'
      })
      .send('apiKey=xewsdw232')
      .send('username=theuser')
      .end(function (response) {
        if (response.error) {
          return reject(response.error)
        }
        return resolve(response.body);
      });
  })
}
getToken().then((body) => console.log("success", body)).catch((error) => 
console.log("error", error))

关于javascript - 如何从 unirest Nodejs POST 调用获取响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53915088/

相关文章:

javascript - 支持 AM/PM 时间格式以及 24 小时制

javascript - 如何制作一个真正的 Javascript 计时器

node.js - 在 Node.js 中使用动态子域

java - Spring Rest 模板与 https 请求的单元测试

java - Unirest 线程泄漏

javascript - 使用 firebase 和 Angular 在其中插入一些数据后无法显示我的数组数据?

javascript - 如果我返回表,检查 Ajax 调用是否为 200 OK 的最佳方法是什么?

javascript - 如何解决 Node.js 的异步行为?

node.js - Access-Control-Allow-Origin 问题,即使它应该有效

Java "Broken Pipe"错误(使用 Unirest http 包装器)