как перехватить запрос в express nodejs?

#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 поле.