В моем приложении Express я хотел бы выполнить некоторые перенаправления, когда определенные параметры маршрута соответствуют определенным критериям, используя предварительное условие параметра маршрута.В качестве примера, скажем, я хочу, чтобы параметр word
был преобразован в верхний регистр, если это еще не сделано.
Параметр word
может присутствовать в нескольких различных маршрутах, например /:word
, /foo/:word
, /foo/:word/bar
и т. Д. К счастью, с предварительными условиями параметра маршрута все они обрабатываются одним и тем же кодом, например (код в CoffeeScript):
app.param 'word', (req, res, next, word) ->
if word isnt word.toUpperCase()
new_URL = // current URL, but replace word with word.toUpperCase() //
res.redirect new_URL, 301
Мой вопрос касаетсякак построить new_URL
, заменив :word
его заглавным эквивалентом.Я хочу иметь возможность использовать одну и ту же функцию для построения new_URL
, независимо от того, какой маршрут используется в настоящее время.
Я вижу, что есть req.route
, но он не определен.Я предполагаю, что могу получить доступ к текущему подходящему маршруту через req.app.routes.routes.get[req._route_index]
, а затем разделить path
и восстановить его, но это кажется слишком сложным.Есть ли способ просто перебрать сегменты path
для текущего маршрута?Спасибо!