В моем веб-приложении пользовательский интерфейс Angular используется в качестве статического ресурса из приложения Spring Boot (путем копирования встроенного приложения Angular в папку / resources / static приложения Spring Boot).
Все мои конечные точки Spring имеют префикс /api
.
Соответствующие маршруты из приложения Angular:
{ path: 'login', component: LoginComponent },
{ path: 'registration', component: RegistrationComponent },
{ path: '', pathMatch: 'full', redirectTo: 'login' }
Это работает нормально, когда я запускаю приложение Spring Boot и перехожу на http://localhost:8080
в браузере, тогда отображается страница входа в приложение Angular.
Проблемная часть:
Переход непосредственно к страницам входа или регистрации путем вставки http://localhost:8080/login
или http://localhost:8080/registration
в браузер и нажатия Enter не будет работать, потому что запрос попадет в приложение Spring Boot и, поскольку у него нет соответствующего сопоставления, он будет возврат 404.
Первое, что я сделал, очевидно, был поиск решения в Stackoverflow, и большинство ответов предлагали пересылать запросы в корень с соответствующим сопоставлением, поэтому я добавил следующее Controller
:
@Controller
public class ViewController {
@RequestMapping({"/login", "/registration"})
public String forward() {
return "forward:/";
}
}
Это решает 404 ошибки.
Проблема в том, что даже если я сразу перехожу на http://localhost:8080/registration
, меня перенаправляют на страницу входа и отображается LoginComponent
.
Чего я хотел бы добиться, так это перейти в браузер к http://localhost:8080/registration
, а затем перейти на страницу регистрации и показать RegistrationComponent
приложения Angular.
Это вообще возможно? Если это так, я бы по-настоящему оценил любой совет, как этого добиться.