Как правильно настроить маршрутизацию для angular2 с помощью koajs

Я новичок в angular2 и koajs. Может глупый вопрос.

У меня есть приложение angular2 с таблицей маршрутизации, как показано ниже:

const appRoutes: Routes = [
  {
    path: 'pats/report/settings',
    component: PatsReportSettingsComponent
  },
  {
    path: 'pats/report/:id',
    component: PatsReportComponent,
    pathMatch: 'full'
  },
  {
    path: 'pats/report/login',
    component: PatsLoginComponent,
    pathMatch: 'full'
  },
  {
    path: '.',
    redirectTo: 'pats/report/login',
    pathMatch: 'full'
  },      
  {
    path: '**',
    component: Pats404PageComponent,
    pathMatch: 'full'
  },
];

Если пользователь получает доступ к нашему приложению через корневой URL-адрес (http://localhost:3000), перейдите на дочернюю страницу (например, : http://localhost:3000/pats/report/settings), все в порядке, начиная с angular2 app будет обрабатывать навигацию по дочерней странице внутренне и не будет отправлять http-запрос к серверной части.

Но если пользователь напрямую обращается к нашему приложению с URL-адресом дочерней страницы, например: http://localhost:3000/pats/report/settings, бэкенд-приложение koajs ответит статусом 404, так как не существует маршрута для пути «pats/report/settings» на бэкенде.

Как правильно решить эту проблему?

Должен ли я добавить маршрут для всех путей к дочерним страницам клиента во внутреннем маршрутизаторе и ответить с помощью index.html?


person ricky    schedule 23.08.2016    source источник


Ответы (1)


Я не знаю Koajs, но вам нужно промежуточное программное обеспечение. Ваш сервер должен перенаправить этот запрос на localhost:3000/, но оставить URL как есть, чтобы angular мог творить чудеса!

См. дополнительные пакеты для koajs:

Другой вариант: используйте Hashbang-URL! Стили URL-адресов Angular2

person slaesh    schedule 23.08.2016
comment
Проверены стили URL-адресов Angular2, и кажется, что Hashbang-URL не рекомендуется. - person ricky; 23.08.2016
comment
Да, просто хотел показать вам и этот вариант. Лучшей практикой будет правильная обработка unknown URLs через ваш koajs-backend. - person slaesh; 23.08.2016
comment
Я пробовал koa-repath, работает хорошо! Еще раз спасибо, @mxii - person ricky; 24.08.2016