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

mask g258b04055 640
Web Security, Jakarta EE (Java EE), Spring

Jackson JSON Filter

JSON als Datenstruktur ist bei der Implementierung von Webservices kaum wegzudenken. Insbesondere Jackson als JSON Parser bietet eine ganze Reihe von Möglichkeiten, um auf die Generierung einzuwirken. Ein naheliegen Anwendungsfall hier z.B. das Ausblenden von bestimmten Attributen basierend auf Benutzer-Rollen oder Berechtigungen. Vorhang auf für: @JsonFilter

i18n 2
Webprogrammierung

Angular, i18n mit ngx-translate

Internationalisierung. Eine typische Aufgaben bei der Implementierung von Web-Anwendungen. Diese Anforderung macht auch vor Angular nicht halt. Hier bieten sich…

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!