我到处搜索,最终没有找到bluebird承诺请求的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);
});
上面是我的程序中的代码片段。并且它不发送put请求。使用postAsync时,if将成功发送post请求。
有人能解释一下原因吗?
我已经在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之间除了方法类型之外还有这样的区别?