0
//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();
  })

有人知道问题出在哪里吗?

我正在尝试请求对电影数据库的 api 进行研究并取回结果

4

1 回答 1

0

代码有一些问题。我已经对其进行了测试并使其工作。

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'),
      };
  • 首先,由于您使用的是 https 模块,因此您无需指定协议,也无需将其放入 url。这就是您的 options 变量应该是的样子。

  • 其次,您将整个查询对象附加到 {} 的 url,而不是您应该附加一个字符串,该字符串将在您的查询对象的键之一中,在我的情况下为query.data

  • 第三,如果字符串中有空格例如: Home Alone你要保持空格并避免错误,我们将字符串替换为%20,这是一个转义字符。

  • Forth 尝试在回调函数中为 https 请求变量及其响应变量指定一个唯一名称,否则它将覆盖路由的 req res变量,导致您的代码无法工作。请注意我如何使用路由的 res 函数将数据发送回并结束响应

  • 此外,我在req.body中获取数据,您正在使用req.params但是您的路线中没有定义参数。尝试浏览文档以获取更多信息

    这是完整的代码

apiRoutes.post('/search',function (req, res) {
      https = require('https');
      var query = req.body;
      console.log(query.data);
      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'),
      };
      var request = https.request(options, function(response) {
        var chunks = [];
        response.on("data", function (chunk) {
          chunks.push(chunk);
        });
        response.on("end", function () {
          var body = Buffer.concat(chunks);
          console.log(body.toString());
          res.send(body);
          res.end()
        });
      });
      request.end();
    });

希望能帮助到你。

于 2017-02-17T16:11:38.577 回答