2017-02-23 1 views
0

Nodejs (v7.4)에서 요청을 통해 전송 된 이름을 변경할 수 있도록 JSON 개체에서 쿼리 문자열을 생성합니다. request_options var를 사용할 때 질의는 단지 타임 아웃된다. 직접 request_options var 코드를 전달하면 작동합니다.JSON API 요청 문자열 쿼리

이 코드에 실수가 있습니까?

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