2015-12-03 102 views
2

我在这里和那里搜索,最终没有发现关于蓝鸟promisified请求的putAsync方法。如何在Promisify请求模块后正确使用putAsync模块

var request = require('request'); 
var Promise = require('bluebird'); 
Promise.promisifyAll(require("request")); 

request.putAsync({ 
    uri: buApiUrl, 
    headers: { 
     'content-type': 'application/json' 
    }, 
    body: JSON.stringify({ 
     name: BU, 
     workstations: formattedWorkStaions[BU] 
    }) 
}).spread(function (response, body) { 
    debugHelper.log(body); 
}).catch(function (err) { 
    debugHelper.error(err); 
}); 

以上是我的程序中的代码片段。它不发送放置请求。在使用postAsync时,如果将成功发送post请求。

任何人都可以解释为什么吗?

+0

请提供一个完整的例子。你在哪里公布实现它的put方法或库? – sdgluck

+0

@sdgluck,我已经在代码片段中加入了promisification。感谢您回答我的问题。我想我已经找到了我无法发送请求的原因。我很快就会在这里发表我的答案。 –

回答

2

我已经在putAsync代码片段中找到错误的部分。我应该使用json而不是body来作为有效载荷的关键字。有效载荷不需要被串化。 以下是经过验证可以使用的新代码片段。

var request = require('request'); 
 
var Promise = require('bluebird'); 
 
Promise.promisifyAll(require("request")); 
 

 
request.putAsync({ 
 
    uri: buApiUrl, 
 
    headers: { 
 
     'content-type': 'application/json' 
 
    }, 
 
    json: { 
 
     name: BU, 
 
     workstations: formattedWorkStaions[BU] 
 
    } 
 
}).spread(function (response, body) { 
 
    debugHelper.log(body); 
 
}).catch(function (err) { 
 
    debugHelper.error(err); 
 
});

这是相当棘手,并导致我的第二个问题。 为什么post和put之间存在这种差异,而不是他们的方法类型?