2017-02-20 4 views
2

В настоящее время я работаю над приложением URL shortener, используя Express. Я хочу, чтобы пользователь мог ввести URL, как это:Работа с символами косой черты в параметре запроса с использованием экспресс-маршрута

https://www.exampleurlshortener.com/new/https://www.google.com 

Проблема заключается в том, когда я пытаюсь указать параметр, используя Экспресс это будет только извлечь «https:» раздел и все после этого теряется потому что 2 обратных слеш регистрация в качестве нового маршрута:

app.get('/new/:url', (req, res) => { 
    console.log(req.params.url) // outputs 'https:' 

Я думал об указании каждой секции в качестве нового параметра, но если inner пустое это заканчивается бросать 404. мне нужно проверить, если внутреннее пустая, используя этот метод в противном случае пользователь мог бы ввести https:/something/www.google.com

app.get('/new/:prot/:inner/:address', (req, res) => { 
    // throws 404 on valid addresses 

Есть ли простой способ решить эту проблему, которую мне не хватает? Можно ли проверить полный URL-адрес в запросе? Или параметры могут игнорировать обратную косую черту?

+1

Попробуйте использовать 'req.url' или передать параметр через строку запроса (я рекомендовал бы этот 2-й подход, он также будет проще клиенты вашего API) – slezica

ответ

2

Вы можете использовать an expression для ваших URL заполнителей:

app.get('/new/:url(.*)', (req, res) => { 
    console.log(req.params.url) // will output 'https://www.google.com' 
+0

Это именно то, что я хотел. Я просмотрел эту документацию, но я не мог видеть пример, как то, что вы предоставили. Благодарю. – BenShelton

+1

Просто примечание, когда я попробовал свой код с параметрами '(. *)' Я снова получал 404 ошибки, но с использованием '(*)' вместо этого работал в моем случае. – BenShelton