从nodejs调用rest api的最佳方法是什么?

时间:2017-08-23 14:18:13

标签: javascript node.js rest promise

我有一个节点 - 休息 - 客户端,我用它来调用外部应用程序,下面的调用返回400,我也看到服务器的响应,但任务没有完成。

1-从nodejs进行api调用的最佳方法是什么?

2-如何使用promise for rest client module?

restCall.js

var Client = require('node-rest-client').Client;
var client = new Client();

var arg2 = {
    data: {"workerId":"aworkerId",
           "variables":{
           "caseIdFound":{"value": true}
           }
     }
}

//Complete Task
function completeTask(taskId) {
    client.post('https/url/'+taskId+'/complete',arg2,function(data,response) {
        console.log('CompleteTaskResponse',data);
        console.log('ResponseComplete',response.body);
    })
}

completeTask(3455l);

1 个答案:

答案 0 :(得分:1)

不熟悉node-rest-client模块,但有些事情对我有用。

回调中的错误参数在哪里?通常你应该能够做类似

的事情

post('yourUrl', data, (error, data) => { ... })

通过这种方式,您可以查看错误响应并查看出现了什么问题。我个人建议使用库needle,如果不是http模块本身。

要使用此承诺,您可以尝试宣传图书馆。不确定这个库是否支持,但是你可以使用像bluebird这样的库

Promise.promisifyAll(nodeClient)

或者,您可以将调用包装在您自己的函数中,如下所示

function post (url, data) {
  return new Promise((resolve, reject) => { 
    client.post(url, data, (error, response) => {
      if (error) {
        reject(error)
      } else {
        resolve(response.body)  
      }
    }      
  })
}

然后你可以做像

这样的事情
post(myUrl, { ... })
  .then((info) => { ... })
  .catch((error) => { ... })