2017-02-23 9 views
0

Nodejs(v7.4)では、リクエストで送信された名前を変更できるように、JSONオブジェクトからクエリ文字列を作成しています。 request_options varを使用すると、クエリがタイムアウトするだけです。私は直接request_options varコードを渡すときに動作します。APIリクエストの文字列を取得するJSONオブジェクト

このコードに間違いがありますか?

var request = require('request'); 
var FirstName = "John"; 
var LastName = "Wick"; 
var request_options = {"url":"https://api.example.com", 
      "method":"POST", 
      "headers":"{Content-Type:application/json}", 
      "body":{"firstname":FirstName, "lastname": LastName} 
      }; 

var request_OptStr = objectToQueryString(request_options) 
console.log(request_OptStr); 
request(request_OptStr, function(err, response, body){ 
    if(!err && response.statusCode < 400){ 
    //do something...... 
    } else { 
    if(response){ 
     console.log('ERROR'); 
     console.log(response.statusCode); 
    } 
    } 
}); 

objectToQueryString関数はhereです。 request_OptStrの出力はurl=https%3A%2F%2Fapi.example.com&method=POST&headers=%7BContent-Type%3Aapplication%2Fjson%7D&body%5Bfirstname%5D=John&body%5Blastname%5D=Wick

+0

なぜ私は、あなたが、POST要求の本文ではなく、問い合わせ文字列のオプションが必要だと思っているのかはっきりしていません。それを拡大できますか? (どちらの方法でも、変数を使用してリクエスト内の値を設定することができます。) – nnnnnn

+0

テンプレートにアクセスして特定のDBにアクセスするだけです。オプションは文字列として挿入するとコードが動作します。私が要求にvarsを設定することができない理由は、それは文字列を期待しています。 – JnL

答えて

0

objectToQueryString関数はオブジェクトからクエリ文字列をエンコードしてURLを作成しているので、あなたがrequest_OptStrrequestを使用するときにあなたが持っているすべてはqueriesであり、httpリクエストは、その無効URIを失敗しました。

var request = require('request'); 
var FirstName = "John"; 
var LastName = "Wick"; 

var request_options = { 
    "method": "POST", 
    "headers": "{Content-Type:application/json}", 
    "body": { 
    "firstname": FirstName, 
    "lastname": LastName 
    } 
}; 

var request_OptStr = objectToQueryString(request_options) 

request("http://api.example.com/" + request_OptStr, function(err, response, body) { 
    if (!err && response.statusCode == 200) { 
    console.log(body); 
    } else { 
    console.log(err); 
    } 
}); 
関連する問題