1

メール検証にMailgun APIを使用するcurlコマンドをノードに入れようとしていますが、リクエストを行うと、curlのようにAPIが「アドレス」フィールドを認識しません。

スクリプトと結果は次のとおりです。

カールコマンド

curl -s --user api:pubkey-5ogiflzbnjrljiky49qxsiozqef5jxp7 -G \
    https://api.mailgun.net/v2/address/validate \
    -d address='john.smith@gmail.com'

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: "address=john.smith@gmail.com"
  , form: { address: "john.smith@gmail.com" }
  , 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": "john.smith@gmail.com",
  "did_you_mean": null
}

私が得る出力

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

1 に答える 1

2

https://github.com/mikeal/request#requestoptions-callbackを参照してください。

フォーム パラメーターはリクエストの本文を設定しますが、GET リクエストの場合はクエリ文字列にパラメーターを渡します。GET リクエストqsの代わりにパラメーターを使用します。form

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

var options = {
    url: 'https://api.mailgun.net/v2/address/validate'
  , method: 'GET'
  , qs: {address: 'john.smith@gmail.com'}
  , 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))
})
于 2013-08-06T20:35:07.727 に答える