0

我正在使用 Webhooks,我正在尝试从我的 node.js 代码运行 Curl 请求。我正在使用 npm请求包来执行此操作。我无法找到将 Curl 请求转换为将发送请求的应用程序中的代码的正确方法。

这是卷曲请求:

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."
}

所有凭据都来自 Plaid 网站,它们在我的终端上工作得很好,所以我认为这正是我编写 Node.js 代码的方式导致了问题。

如果有人可以帮助我找到编写节点代码的正确方法,以便它完成 curl 请求在终端中所做的事情,那将不胜感激!谢谢!

4

3 回答 3

1

您可能想在您的选项中使用form:而不是。data:希望这能解决问题。

于 2017-12-02T22:38:31.217 回答
1

请求的默认方法是 GET。你想要一个 POST,所以你必须将它设置为参数。您还必须根据文档将数据作为 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
  }
};
于 2017-12-02T22:45:48.780 回答
1

请参阅explainshell:curl -X -d了解您的 curl 命令实际执行的操作。

  • 你发送一个POST请求
  • 您使用内容类型application/x-www-form-urlencoded发送数据

要使用请求复制它,您必须相应地配置它:

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

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

有关更多示例,请参阅application/x-www-form-urlencoded

于 2017-12-02T22:46:27.613 回答