Node.js TypeError:请求路径包含未转义字符,知道吗
有人知道问题出在哪里吗Node.js TypeError:请求路径包含未转义字符,知道吗,node.js,mongodb,api,themoviedb-api,Node.js,Mongodb,Api,Themoviedb Api,有人知道问题出在哪里吗 我正试图请求对api电影数据库进行研究,并将结果返回代码存在一些问题。我已经对它进行了测试,并使它发挥了作用 //route to search (POST http://localhost:8080/api/search) apiRoutes.post('/search', function(req, res) { console.log('search'); var query = req.params; console.log(query
我正试图请求对api电影数据库进行研究,并将结果返回代码存在一些问题。我已经对它进行了测试,并使它发挥了作用
//route to search (POST http://localhost:8080/api/search)
apiRoutes.post('/search', function(req, res) {
console.log('search');
var query = req.params;
console.log(query);
options = {
protocol : "https:/",
host: "https://api.themoviedb.org",
path: "/3/search/movie?api_key=35f7a26be584f96e6b93e68dc3b2eabd&language=en-US&page=1&include_adult=false&query="+query,
};
var req = https.request(options, function(res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("{}");
req.end();
})
- 首先,因为您使用的是https模块,所以不需要指定协议,也不需要将其放入url中。这就是你的选项变量应该是什么
- 其次,您将整个查询对象附加到url{},而应该附加一个字符串,该字符串将位于查询对象的一个键中(在我的例子中是query.data
- 第三,如果字符串中有空格,例如:Home-Alone您可以保留空格并避免错误,我们将字符串替换为%20,这是一个转义字符
- 第四,尝试在回调函数中为https请求变量及其响应变量指定一个唯一的名称,否则它将覆盖路由的req res变量,从而导致代码无法工作。注意我是如何使用route的res函数发送数据并结束响应的
- 另外,我正在req.body中获取数据,您正在使用req.params但是在您的路由中没有定义参数。请尝试浏览以获取更多信息 这是完整的代码
apirouts.post('/search',函数(req,res){
https=require('https');
var query=req.body;
console.log(query.data);
让选项={
主持人:“api.themoviedb.org”,
路径:“/3/search/movie?api_key=35f7a26be584f96e6b93e68dc3b2eabd&language=en-US&page=1&include_-maintal=false&query=“+query.data.replace”(“”,“%20”),
};
var request=https.request(选项、函数(响应){
var chunks=[];
关于(“数据”,函数(块){
推(chunk);
});
响应。on(“结束”,函数(){
var body=Buffer.concat(块);
console.log(body.toString());
决议(正文);
决议结束()
});
});
request.end();
});
可能尝试转义&
字符?尝试将协议:“https:/”
替换为端口:443
,并从URL前面删除https://
。是的,但是您和esc?已经尝试更改您提到的端口和URL
let options = {
host: "api.themoviedb.org",
path: "/3/search/movie?api_key=35f7a26be584f96e6b93e68dc3b2eabd&language=en-US&page=1&include_adult=false&query="+query.data.replace(' ','%20'),
};