#javascript #node.js #express
#javascript #node.js #экспресс
Вопрос:
не могли бы вы рассказать мне, как перехватить запрос в express nodejs? Я хочу перехватить все запросы, такие как /in/docs
, /es/docs
, /fr/docs
..
const server = express()
server.get('/in/docs', (req, res) => {
console.log('====kk==')
app.render(req, res, '/')
})
server.get('*', (req, res) => {
return handle(req, res)
})
в настоящее время я выполняю жесткую привязку, подобную этой, с которой он работает /in
.Я хочу перехватить весь запрос /fr
, /en
.
server.get('/in/docs', (req, res) => {
console.log('====kk==')
app.render(req, res, '/')
})
Комментарии:
1. Что-то вроде
'/*/docs'
will matching /anything/docs , или, если вам нужно получить значение «что угодно», вы можете использовать параметры маршрута:'/:lang/docs'
, тогда вы можете получить доступ к значению lang, используяreq.params.lang
в своем обратном вызове2. спасибо за ответ. Этот «/ */ docs» также будет вызываться при запросе пользователя
/en/docs/something
3. итак, это сработает, если я создам два обработчика, один из которых this
'/:lang/docs'
, а другой'/:lang/docs/:something'
4. Вы можете создать маршрут, содержащий регулярное выражение, которое охватывало бы все нужные языки.
5. можете ли вы поделиться своим ответом
Ответ №1:
Используйте параметры маршрута с использованием двоеточий:
server.get('/:language/docs', (req, res) => {
console.log(req.params.language); // gives 'in' if you specify 'in', 'fr' if you specify 'fr', etc
});
Вы можете вкладывать параметры сколько угодно, и это даст вам объект в req.params
поле.