Экспресс-маршрутизация NodeJS — Обслуживание как внешнего, так и внутреннего интерфейса в одном приложении NodeJS

#node.js #express #frontend #backend #express-router

Вопрос:

В настоящее время я пытаюсь понять, как лучше всего запустить свой интерфейс и серверную часть в одном и том же приложении NodeJS.

В настоящее время у меня есть два экспресс-маршрутизатора, один для моего интерфейса, а другой для бэкенда.

Ниже приведена выдержка из моего маршрута пользовательского интерфейса/интерфейса. При посещении / , на которое я хочу перенаправить /dashboard , у меня есть промежуточное программное обеспечение, которое проверяет, получили ли вы доступ к панели мониторинга, но не авторизованы, после чего вы перенаправляетесь на /login маршрут.

 const routes = (app) =gt; {  const ui = Router();   ui.use(function (req, res, next) {  console.log(req.originalUrl)  if (req.originalUrl === '/login' || req.originalUrl === '/register') {  console.log('public route hit')  return next();  }   if (req.isAuthenticated()) {  console.log('user is authed')  return next();  }  console.log('re-directing to login')  return res.redirect('/login');  });   ui.get('/', (req, res) =gt; {  res.redirect('/dashboard'); //If root is navigated to go to dashboard  });   ui.get('/dashboard', async (req, res) =gt; {  res.render('static/dashboard.html', {  locals: {  ...globalLocals,  pageName: 'Dashboard'  },  partials: {  ...globalPartials  }  });  });  app.use('/', ui); };  

Выписка из моей маршрутизации API является:

 const routes = (app) =gt; {  const api = Router();   api.get('/logout', async (req, res, next) =gt; {  await req.logout();  return handleResponse(res, 200, 'success');  });   app.use('/api/v1/', api); };  

Основная проблема , с которой я сталкиваюсь, заключается в том, что, используя мой путь к интерфейсному маршрутизатору / , он затем запускает мое промежуточное программное обеспечение для аутентификации при любых вызовах API /api/v1/*** , что приводит к любым попыткам входа в /api/v1/login систему, приводящим к перенаправлению /login .

Как мне обойти эту проблему? Должен ли я иметь маршрутизацию интерфейса/пользовательского интерфейса по своему собственному пути, например, /app/ предоставить мне /app/dashboard ?

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

1. «лучший способ запустить мой интерфейс и серверную часть в одном и том же приложении NodeJS» — интерфейс не запускается на узле, он запускается в браузере клиента. Я не уверен, что понимаю вашу терминологию…. не могли бы вы уточнить свои намерения, пожалуйста?

2. Привет @ggorlen, извините, я должен был выразиться более ясно в первом посте. Я обслуживаю страницы через Express с помощью механизма шаблонов, которые обслуживаются с помощью моего ui маршрутизатора.