2017-01-27 2 views
1

Betrachten Sie eine URL wie folgt aus:die URL aus der String-Abfrage Extrahieren

http://some-site.com/something/http://www.some-other-site.com

ich an die Konsole die fett Teil aus der Query-String dh der zweiten http einzuloggen versuche: // mit der folgenden Methode.

app.get("/something/:qstr",function(req,res){ 

    console.log(req.params.qstr); 
}; 

Dies wird jedoch nur bis zum http arbeiten: -> sobald die // angetroffen wird, wird es nicht mehr in den req.params.qstr Ich mag würde wissen, wie das gesamte URL-Zeichenfolge zu erhalten. Wie kann ich das erreichen?

Vielen Dank.

+0

Das ist keine gültige URL; Die URL-Komponente im Pfad müsste [URL-codiert] sein. (https://en.wikipedia.org/wiki/Percent-encoding) Das könnte der Grund sein, warum es nicht für Sie funktioniert. Woher beziehen Sie diese Daten? –

+0

Was ich versuche zu erreichen, ist die zweite URL zu meiner Datenbank zu speichern, wenn es nach etwas eingegeben wird, ich versuche, diesen Teil zu extrahieren und in meiner Datenbank zu speichern. – JohnSnow

+0

Aber warum erhalten Sie URLs, die auf diese Art und Weise strukturiert sind? –

Antwort

2

Sie können diese versuchen, eine Regex:

var app = require('express')(); 

app.get(/^\/something\/(.*)/, function (req, res) { 

    console.log(req.params[0]); 
    res.json({ok: true}); 

}); 

app.listen(3333,() => console.log('Listening on 3333')); 

Wenn Sie laufen:

curl http://localhost:3333/something/http://www.some-other-site.com 

die Server druckt:

http://www.some-other-site.com 

wie man wollte.

Die res.json({ok: true}); gibt es nur einige Antwort zurückgeben, so dass die curl wird nicht für immer hängen.

+0

Sie können res.json zu res.send() ändern und Sie erhalten eine 200 zurück –

+0

Dies löste es dank. Kannst du bitte schnell die Regex erklären? Es heißt einfach alles bis nach dem Schrägstrich greifen oder? – JohnSnow

+0

Wenn ich app.get() tue funktioniert es aber wenn das gleiche mit app.use wird es nicht tun. app.use (/ \/new \/(. *) /, Fehler); - error.js -> router.get ("/", Funktion (req, res)) { console.log (req.params [0]) res.send (req.params [0]) }); bitte – JohnSnow

Verwandte Themen