GEDOPLAN
SpringWebprogrammierung

Spring Boot forward für Angular / SPA

SpringWebprogrammierung
book 863418 640
book 863418 640

Regelmäßig werden wir Single Page Applications wie Angular in einer Spring Boot Application integrieren wollen. Das lässt sich recht einfach dadurch realisieren, dass die kompilierte Angular Anwendung im “static” Ordner der Spring Boot Anwendung abgelegt wird. In aller Regel wollen wir beim Routing in unserer Angular Anwendung eine PathLocationStrategy aktivieren (“lesbare” URLs wie “…/customer/12/details”, im Gegensatz zur HashLocationStrategy: “…/#customer/12/details”).

Das Problem: ein direkter Aufruf oder Refresh der Seite wird vom Server natürlich mit einem 404-NotFound beantwortet.

Die Lösung: alle Anfragen die nicht an unsere API gehen sollen auf den Root-Pfad (die index.html) umgeleitet werden, damit Angular das eigentliche Routing übernehmen kann:

@Controller
public class RedirectController {

  @RequestMapping(value = "{path:^(?!api|public|assets)[^\\.]*}/**")
  public String forward() {
    return "forward:/";
  }
}

Alle Anfragen, die nicht unsere statische Ressourcen oder API adressieren (api,public,assets) werden mit einem “forward” auf unsere index.html umgeleitet.

Bis einschließlich Spring Boot 2.x war auch folgendes Pattern erlaubt:

/**/{path:[^.]*}

Mit Spring Boot 3.x wurde der Standard Parser für URIs jedoch von AntPathMatcher auf PathPatternParser  geändert (s. https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0#use-spring-mvcs-pathpatternparser) der eine Wildcard in dieser Form nicht mehr zulässt. 

Neben dem angepassten Pattern wie oben, ließe sich über die Property "spring.mvc.pathmatch.matching-strategy" jedoch auch wieder der alte Parser aktivieren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

IT-Training - GEDOPLAN
Webprogrammierung

Angular 2 – Lazy Load Modules

Unsere bisherigen Beispiele sind alle davon ausgegangen das es ein zentrales Modul gibt dessen Referenzen von Webpack analysiert und in…
IT-Training - GEDOPLAN
Webprogrammierung

[out of date]Angular2 – Testen mit Protractor

Die unten aufgeführten Beschreibung basiert auf einer veralteten Version von Angular. Einen aktualisierten Artikel gibt es hier: https://javaeeblog.wordpress.com/2016/10/06/angular-2-testen-mit-protractor-update/ Protractor ist…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!