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

时间:2015-12-03 05:09:47

标签: node.js request http-post promise http-put

我在这里和那里搜索并最终没有找到关于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会成功发送帖子请求。

任何人都可以帮忙解释原因吗?

1 个答案:

答案 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之间存在这样的差异?