如何在promisify请求模块之后正确使用putAsync



我到处搜索,最终没有找到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之间除了方法类型之外还有这样的区别?

相关内容

最新更新