2017-02-17 6 views
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(); 
    }) 

IST ANYONES WIE DAS PROBLEM IST? BITTE Ich versuche, eine Anfrage zu tun, um die API den Film db zu tun und das Ergebnis zurückTypeError: Request-Pfad enthält nicht-Zeichen-Zeichen, jede Idee

+0

Vielleicht versuchen, '&' Charakter zu entkommen? –

+1

Versuchen Sie, "protocol:" https:/"' mit 'port: 443' zu ersetzen und entfernen Sie' https: // 'von der Vorderseite der URL. – dan

+0

Ja, aber waren und der esc? –

Antwort

0

Es gibt einige Probleme mit dem Code. Ich habe es getestet und es zur Arbeit gebracht.

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'), 
     }; 
  • vor allem, da Sie https Modul brauchen Sie nicht verwenden, um das Protokoll zu geben, noch müssen Sie es in der URL setzen. So sollte Ihre Optionsvariable sein.
  • Zweitens Sie Anfügen die gesamte Query-Objekt auf die URL, die ist {} stattdessen sollten Sie einen String anhängen, die in einer der Schlüssel der Anfrage Objekt in meinem Fall seine query.data
  • wird
  • Drittens, wenn Leerzeichen in der Zeichenfolge sind Beispiel: Home Alone Sie Platz zu halten und den Fehler zu vermeiden, ersetzen wir die Zeichenfolge mit % 20, die ein Zeichen ist eskortieren.
  • Forth Versuchen Sie, einen eindeutigen Namen für die https-Anforderungsvariable und ihre Antwortvariable in der Callback-Funktion zu geben, oder sie überschreibt die -Route-Anforderung Variablen verursachen Ihren Code nicht zu arbeiten. Beachten Sie, wie ich wieder die Daten res Funktion Route verwendet haben zu senden und am Ende die Antwort
  • Auch bekomme ich die Daten in req.body und Sie verwenden req.params jedoch gibt es keine definierten params in Ihrem Routen. gehen durch die documentation Weitere Informationen Versuchen ist

    die komplette Code

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

Hoffe, es hilft.

Verwandte Themen