Запустите промежуточное программное обеспечение express для всех маршрутов, кроме тех, которые начинаются с /api/v1

#javascript #node.js #regex #express

Вопрос:

Я знаю, что могу создать общий маршрут, скажем

 app.get(/^((?!/api/v1/).)*$/, (req, res) => {
res.sendFile(path.join(__dirname, '../client/build', 'index.html'));});
 

Комментарии:

1. В чем заключается ошибка? Это работает неправильно?

2. дело в том, что я хочу игнорировать /api/v1 с моих маршрутов ! Мой код не работает

Ответ №1:

Если вы хотите игнорировать /api/v1 путь, используйте

 /^((?!/api/v1).)*$/
 

Пример

 app.get(/^((?!/api/v1).)*$/, (req, res) => {
res.sendFile(path.join(__dirname, '../client/build', 'index.html'));});
 

и за игнорирование /api/v1/

 /^((?!/api/v1/).)*$/
 

Пример

 app.get(/^((?!/api/v1/).)*$/, (req, res) => {
res.sendFile(path.join(__dirname, '../client/build', 'index.html'));});
 
 console.log(/^((?!/api/v1).)*$/.test('/api/v1'));
console.log(/^((?!/api/v1).)*$/.test('/api/example')); 

Комментарии:

1. @bokino12 чего именно ты хочешь? Проверьте /api/v1 , не возвращает ли значение false, если вы используете /^((?!/api/v1).)*$/ регулярное выражение. Так в чем же дело?