Javascript 用于查询API请求字符串的JSON对象

Javascript 用于查询API请求字符串的JSON对象,javascript,json,node.js,query-string,Javascript,Json,Node.js,Query String,在Nodejs(v7.4)中,我从一个JSON对象创建一个查询字符串,以便更改通过请求发送的名称。当我使用request_选项var时,查询就会超时。当我直接传入request_options var代码时,它就可以工作了 这个代码有错误吗 var request = require('request'); var FirstName = "John"; var LastName = "Wick"; var request_options = {"url":"https://api.exampl

在Nodejs(v7.4)中,我从一个JSON对象创建一个查询字符串,以便更改通过请求发送的名称。当我使用request_选项var时,查询就会超时。当我直接传入request_options var代码时,它就可以工作了

这个代码有错误吗

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);
     }
    }
});
var request=require('request');
var FirstName=“John”;
var LastName=“Wick”;
var请求_选项={“url”:https://api.example.com",
“方法”:“发布”,
“headers”:“{Content-Type:application/json}”,
“正文”:{“firstname”:firstname,“lastname”:lastname}
};
var request\u OptStr=objectToQueryString(请求选项)
控制台日志(请求\u OptStr);
请求(请求、操作、功能(错误、响应、正文){
如果(!err&&response.statusCode<400){
//做点什么。。。。。。
}否则{
如果(答复){
console.log('ERROR');
console.log(响应.状态码);
}
}
});

可以找到objectToQueryString函数。请求的输出是
url=https%3A%2F%2Fapi.example.com&method=POST&headers=%7BContent-Type%3Aapplication%2Fjson%7D&body%5Bfirstname%5D=John&body%5Blastname%5D=Wick
函数对来自对象的查询字符串进行编码并创建url,因此,当您在
request\u OptStr
上使用
request
时,所有的都是
查询
,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);
  }
});

我不清楚为什么您认为您需要查询字符串中的选项,而不是POST请求主体中的选项。你能详细说明一下吗?(无论哪种方式,您都可以使用变量来设置请求中的值,因此…)只需按照模板访问特定的数据库。如果我将选项作为字符串插入,则代码可以工作。我无法在请求中设置变量的原因是,它需要一个字符串。