2017-01-27 5 views
1

Рассмотрим URL, как это:Извлечения URL из строки запроса

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

Я пытаюсь войти в консоль с смелым части из строки запроса, т.е. второго HTTP: // используя следующий метод.

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

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

Однако это будет работать только до тех пор, НТТР: -> как только // не встречается он больше не включается в req.params.qstr я хотел бы знать, как получить всю строку URL. Как я могу это достичь?

спасибо.

+0

Это недействительный URL; URL-адрес в пути должен быть [URL-encoded.] (https://en.wikipedia.org/wiki/Percent-encoding). Это может быть причиной того, что он не работает для вас. Откуда вы берете эти данные? –

+0

То, что я пытаюсь выполнить, - сохранить второй URL-адрес в моем db всякий раз, когда он вводится после чего-то, я пытаюсь извлечь эту часть и сохранить ее в db. – JohnSnow

+0

Но почему вы получаете URL-адреса, которые в первую очередь структурированы таким образом? –

ответ

2

Вы можете попробовать это, используя регулярное выражение:

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')); 

При запуске:

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

серверные принты:

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

, как вы хотели.

res.json({ok: true}); есть только для возврата некоторого отклика, так что curl не будет вечно вешать.

+0

вы можете изменить res.json на res.send(), и вы получите 200 обратно –

+0

Это решило это благодаря. не могли бы вы быстро объяснить регулярное выражение? Это просто сказать, что хватаешь все, пока не порешь? – JohnSnow

+0

Если я нахожу app.get(), он будет работать, но если сделать то же самое с app.use, это не произойдет. app.use (/ \/new \/(. *) /, ошибка); - error.js -> router.get ("/", function (req, res) { console.log (req.params [0]) res.send (req.params [0]) }); – JohnSnow

Смежные вопросы