Javascript 用于查询API请求字符串的JSON对象
在Nodejs(v7.4)中,我从一个JSON对象创建一个查询字符串,以便更改通过请求发送的名称。当我使用request_选项var时,查询就会超时。当我直接传入request_options var代码时,它就可以工作了 这个代码有错误吗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
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请求主体中的选项。你能详细说明一下吗?(无论哪种方式,您都可以使用变量来设置请求中的值,因此…)只需按照模板访问特定的数据库。如果我将选项作为字符串插入,则代码可以工作。我无法在请求中设置变量的原因是,它需要一个字符串。