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

Can someone help me convert this Curl request into node.js?

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

这是 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)
});

它应该 return 一个 item 但我得到的只是:

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

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

如果有人可以帮助我找到编写节点代码的正确方法,以便它可以执行 curl 请求在终端中执行的操作,我们将不胜感激!谢谢!

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

request is GET. You want a POST, so you have to set that as a parameter. You also have to send the data as JSON according to the documentation 的默认方法。所以我相信这应该有效:

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请求
  • 您使用内容类型application/x-www-form-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