В соответствии с различными документами и блогами, а также this question и другими, я знаю, что можно проверять параметры маршрута с помощью регулярных выражений. Это, однако, был я искал примерно в полтора часа:Регулярное выражение для маршрутов маршрута в Express.js
app.get('/api/:url(/^http:\/\/(.+?)\.(.+?)$/)', (req, res) => {
// do stuff with req.params.url
});
Где каждый раз, когда я запускаю сервер локально и введите localhost://8000/api/http://www.google.com
, ответ Cannot GET /new/http://www.google.com
Я знаю, что регулярное выражение делает то, что Я хочу, чтобы это было сделано, потому что:
/^http:\/\/(.+?)\.(.+?)$/.test('http://www.google.com');
... возвращает true.
Я также попытался изменить строку маршрута, чтобы выглядеть ...
'/api/:url(^http:\/\/(.+?)\.(.+?)$)'
'/api/:url(http:\/\/(.+?)\.(.+?))'
'/api/:url/^http:\/\/(.+?)\.(.+?)$/'
И несколько других форматов, которые выглядят ничего отдаленно похожий на примеры, приведенных в переполнению стека потоков и блогах (Документы Экспресса имеют абсолютно нет примеров регулярного выражения, используемого вне параметра первого маршрута). Возможно, есть некоторые ограничения форматирования, о которых я не знаю, или ограничение на поддержку RegExp в Express? Было бы здорово, если бы документы вообще ничего не сказали.
Я ценю любую помощь, которую я могу получить здесь.
Это опечатка или у вас есть «localhost», определяемый как протокол? Разве это не должно быть «http: // localhost: 8000/api/...»? –
Это именно то, что я помещаю в адресную строку браузера, на самом деле неважно, включаю ли я протокол или нет. Независимо от того, о чем я спрашивал. –
Мне было любопытно, спасибо. –