我在这里和那里搜索并最终没有找到关于bluebird的promisified请求的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会成功发送帖子请求。
任何人都可以帮忙解释原因吗?
答案 0 :(得分: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之间存在这样的差异?