2017-12-02 107 views
0

我正在使用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請求在終端中所做的事情,那將是值得讚賞的!謝謝!

回答

1

您可能希望在選項中使用form:而不是data:。希望這會做到這一點。

1

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 
    } 
}; 
1

請參閱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獲取更多示例。

相關問題