2017-02-23 9 views
0

В Nodejs (v7.4) я создаю строку запроса из объекта JSON, чтобы я мог изменить имена, отправленные с помощью запроса. Когда я использую request_options var, запрос просто истекает. Когда я передаю код request_options var прямо, он работает.JSON Object для строки запроса для запроса 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

Просто следуйте шаблону для доступа к конкретному БД. Код работает, если я вставляю параметры в виде строки. Причина, по которой я не могу установить vars в запросе, ожидает строку. – JnL

ответ

0

objectToQueryString функция кодирует строки запроса от объекта и создает URL, поэтому при использовании request на request_OptStr все, что вам есть и queries запрос HTTP не удается, потому что ITS недопустимого 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); 
    } 
}); 
Смежные вопросы