У меня есть 2 приложения Spring Boot, одно из которых выступает в качестве поставщика данных, а другое - просто оболочка для моего приложения Angular 6, чтобы иметь возможность развернуть его на сервере с java -jar JAR_NAME
.
Работая над моим Angular-приложением, используя angular-cli и запуская его с ng serve
, я вижу первую страницу на http://localhost:4200
, которая перенаправляет меня на localhost: 4200 / index. У меня есть другой компонент, сопоставленный с / comp, и при доступе к localhost: 4200 / comp этот новый компонент отображается на странице.
Проблема возникает, когда я развертываю свое приложение, завернутое в пружинную банку, и пытаюсь получить доступ к маршрутам из Angular напрямую. Мое весеннее приложение обслуживается по адресу localhost: 8999, и после нажатия перенаправляется на localhost: 8999 / index, и страница загружается нормально. Если нажать на кнопку, которая перенаправляет меня на страницу comp
, URL-адрес изменится на localhost: 8999 / comp, и ресурсы будут обслуживаться правильно. Проблема в том, что если я получаю доступ к localhost: 8999 / index или localhost: 8999 / comp, я получаю ошибку 404.
Соответствующие фрагменты кода:
From application.yml:
zuul:
ignoredServices: '*'
routes:
g-api:
path: /loc/**
url: http://localhost:8443/api
Из app-routing.module.ts:
const routes: Routes = [
{path: '', redirectTo: '/index', pathMatch: 'full'},
{path: 'index', component: FirstComp},
{path: 'comp', component: SecondComp}}
Из HTML-кода navbar:
<li class="n">
<a class="na"
[routerLink]="['/comp']" >
<i class="a"></i>
<p>comp</p>
</a>
</li>
Как примечание, прокси-сервер zuul работает даже при развертывании с использованием Spring, поэтому я могу получать данные из API, развернутого на другом порту. Но если я обновлю или получу доступ к некоторому компоненту Angular через URL, я получу 404.
PS: здесь не разработчик внешнего интерфейса.