【问题标题】:How do I duplicate this CURL request within nodejs?如何在 nodejs 中复制这个 CURL 请求?
【发布时间】:2015-04-13 00:29:04
【问题描述】:

我正在尝试使用 request-promise 在 nodejs 中复制以下 CURL 请求(最终,我需要使用 Promise,所以我更喜欢这种方法):

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

以下代码 sn-p 显示了我的尝试:

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. 作为响应。这里有什么问题?

PS -- 请注意,我的 uri 是 HTTPS(即“https://api.moonclerk.com/customers”);这是造成问题的原因吗?

【问题讨论】:

  • 您应该在使用该变量定义options之前定义bodyHeaders
  • 好建议;但是,在对此进行更正后,我仍然在原始帖子中打印出相同的错误:(
  • 您能否更新您的代码以反映这些更改?
  • 是的,我没有发布作为答案,因为我很确定这不会完全解决它。不过,这似乎是帮助其他想要回答的人的良好开端。
  • 此站点自动将 cURL 请求转换为节点请求。 curl.trillworks.com

标签: node.js http https


【解决方案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"
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2018-04-17
    • 2023-03-08
    相关资源
    最近更新 更多