有人可以帮我把这个Curl请求转换成node.js吗?

有人可以帮我把这个Curl请求转换成node.js吗?

问题描述:

我正在使用Webhooks,并试图从我的node.js代码运行一个Curl请求。我使用npm 请求包来做到这一点。我无法找到正确的方式将Curl请求转换为将发送请求的应用程序中的代码。有人可以帮我把这个Curl请求转换成node.js吗?

这是卷曲的请求:

curl -X POST https://tartan.plaid.com/connect \ 
    -d client_id=test_id \ 
    -d secret=test_secret \ 
    -d username=plaid_test \ 
    -d password=plaid_good \ 
    -d type=wells \ 
    -d options='{ 
     "webhook":"http://requestb.in/", 
     "login_only":true }' 

这工作得很好,当我在我的终端上运行,所以我知道凭据工作,它在谈论到服务器。

这里是我的Node.js代码:

var request = require('request'); 

var opt = { 
    url: 'https://tartan.plaid.com/connect', 
    data: { 
    'client_id': 'test_id', 
    'secret': 'test_secret', 
    'username': 'plaid_test', 
    'password': 'plaid_good', 
    'type': 'wells', 
    'webhook': 'http://requestb.in/', 
    'login_only': true 
    } 
}; 

request(opt, function (error, response, body) { 
    console.log(body) 
}); 

应该返回一个项目但所有我得到的是:

{ 
    "code": 1100, 
    "message": "client_id missing", 
    "resolve": "Include your Client ID so we know who you are." 
} 

所有凭证从格子网站,他们在我的终端工作就好了,所以我认为这只是我写我的Node.js代码导致问题的方式。

如果任何人都可以帮助我找到正确的方式来编写节点代码,以便它能够做到curl请求在终端中所做的事情,那将是值得赞赏的!谢谢!

您可能希望在选项中使用form:而不是data:。希望这会做到这一点。

request的默认方法是GET。你想要一个POST,所以你必须将它设置为一个参数。您还必须根据documentation将数据作为JSON发送。所以我相信这应该工作:

var opt = { 
    url: 'https://tartan.plaid.com/connect', 
    method: "POST", 
    json: { 
    'client_id': 'test_id', 
    'secret': 'test_secret', 
    'username': 'plaid_test', 
    'password': 'plaid_good', 
    'type': 'wells', 
    'webhook': 'http://requestb.in/', 
    'login_only': true 
    } 
}; 

请参阅explainshell: curl -X -d为解释你的curl命令实际上做了什么。

  • 您发送POST要求
  • 您发送邮件使用使用内容类型的数据应用程序/ x-WWW窗体-urlencoded

要复制与request你必须对其进行相应配置:

var opt = { 
    url: 'https://tartan.plaid.com/connect', 
    form: { 
    // ... 
    } 
}; 

request.post(opt, function (error, response, body) { 
    console.log(body) 
}); 

请参阅application/x-www-form-urlencoded获取更多示例。