2015-04-13 84 views
0

我想重複使用request-promise(最終,我需要使用的承諾,所以我會喜歡這種方法)的NodeJS內,下列curl請求:如何在nodejs中複製此CURL請求?

curl -H "Authorization: Token token=[API Key]" -H "Accept: application/vnd.moonclerk+json;version=1" https://api.moonclerk.com/customers 

下面的代碼片段展示了我的嘗試:

var rp = require('request-promise'); 
var querystring = require('querystring'); 

//this is what I think is causing me trouble 
var bodyHeaders = querystring.stringify({ 
    "Authorization": "Token token=[token taken out in code snippet]", 
    "Accept": "application/vnd.moonclerk+json;version=1" 
}); 

var options = { 
    uri: 'https://api.moonclerk.com/customers', 
    method: 'GET', 
    body: bodyHeaders 
}; 

var cb = function() { 
    return function (response) { 
     console.log("response: ", response);//this should spit out the JSON text I'm looking for 
    } 
} 

rp(options).then(cb()) 

但是我在nodejs控制檯中獲得了Possibly unhandled StatusCodeError: 401 - HTTP Token: Access denied.作爲響應。這裏有什麼問題?請注意,我的uri是HTTPS(即'https://api.moonclerk.com/customers');請注意,我的uri是HTTPS(即'https://api.moonclerk.com/customers');請注意,我的uri是HTTPS(即'https://api.moonclerk.com/customers')。這是什麼導致問題?

+1

您應該在使用該變量定義'options'之前定義'bodyHeaders'。 –

+0

好的建議;然而,糾正後,我仍然得到相同的錯誤打印在我原來的帖子:( – George

+0

你能更新你的代碼,以反映這些變化嗎? –

回答

1

您無法在請求正文中傳遞HTTP標頭,服務器無法在其中識別它們。有關正確使用請求庫的信息,請參閱https://github.com/request/request#custom-http-headers

var options = { 
    // ... 
    headers: { 
     "Authorization": "Token token=[token taken out in code snippet]", 
     "Accept": "application/vnd.moonclerk+json;version=1" 
    } 
});