2013-08-06 51 views
0

我試圖在節點中放入一個curl命令我必須使用Mailgun API進行電子郵件驗證,但是當提出請求時,api永遠不會識別「地址」字段就像捲曲一樣。Node.js中的Mailgun電子郵件驗證API

下面是腳本和結果:

curl命令

curl -s --user api:pubkey-5ogiflzbnjrljiky49qxsiozqef5jxp7 -G \ 
    https://api.mailgun.net/v2/address/validate \ 
    -d address='[email protected]' 

Node.js的腳本

var request = require('request') 
    , inspect = require('util').inspect 

var options = { 
    url: 'https://api.mailgun.net/v2/address/validate' 
    , method: 'GET' 
    , encoding: 'ASCII' 
    // , body: "[email protected]" 
    , form: { address: "[email protected]" } 
    , auth: { 
     username: "api" 
    , password: "pubkey-5ogiflzbnjrljiky49qxsiozqef5jxp7" 
    } 
} 
request(options, function (err, result){ 
    if(err){ console.log(err) } 
    console.log(inspect(result.request.body.toString('utf8'))) 
    console.log(inspect(result.request.response.body))  
}) 

預計輸出

{ 
    "is_valid": true, 
    "parts": { 
    "local_part": "johnsmith", 
    "domain": "gmail.com", 
    "display_name": null 
    }, 
    "address": "[email protected]", 
    "did_you_mean": null 
} 

輸出我得到

'address=john.smith%40gmail.com' 
'{\n "message": "Missing parameter: address"\n}' 

回答

1

請參閱https://github.com/mikeal/request#requestoptions-callback

form參數設置請求的主體,但對於GET請求,您希望在查詢字符串上傳遞參數。使用qs參數而不是form GET請求:

var request = require('request') 
    , inspect = require('util').inspect 

var options = { 
    url: 'https://api.mailgun.net/v2/address/validate' 
    , method: 'GET' 
    , qs: {address: '[email protected]'} 
    , encoding: 'ASCII' 
    , auth: { 
     username: "api" 
    , password: "pubkey-5ogiflzbnjrljiky49qxsiozqef5jxp7" 
    } 
} 
request(options, function (err, result){ 
    if(err){ console.log(err) } 
    console.log(inspect(result.request.response.body)) 
}) 
+0

謝謝:)特雷弗 –

+0

感謝您輕鬆地運行的代碼! –