2015-12-03 167 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之間存在這種差異,而不是他們的方法類型?