java / expert
Snippet
Deklaratives Anfrage-Routing mit benutzerdefinierten WebFlux-RequestPredicates
Spring WebFlux ermöglicht funktionales HTTP-Endpunkt-Routing mittels `RouterFunction` und `RequestPredicates`. Durch die Kombination funktionaler Prädikate zu benutzerdefinierter Anfrage-Auswertungslogik kann die Verzweigung des Steuerflusses Header dynamisch prüfen, ohne auf annotierte Controller zurückzugreifen.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
public class HeaderRoutingConfig {public RouterFunction<ServerResponse> routeByApiVersion(OrderHandler handler) {return RouterFunctions.route(RequestPredicates.all().and(req -> req.headers().header("X-Api-Version").contains("v2")),handler::getOrdersV2).andRoute(RequestPredicates.all(),handler::getOrdersV1);}}
spring
Erklärung
1
public RouterFunction<ServerResponse> routeByApiVersion(OrderHandler handler)
Deklariert eine funktionale Web-Routing-Komponente, die eingehende Anfragen auf Handler-Antworten abbildet.
2
RequestPredicates.all().and(req -> req.headers().header("X-Api-Version").contains("v2"))
Wertet ein benutzerdefiniertes Prädikat aus, um Request-Header-Arrays auf Versions-Matches zu prüfen.
3
handler::getOrdersV2
Bindet übereinstimmende Anfragen per Methodenreferenz an die V2-Handler-Methode.
4
.andRoute(RequestPredicates.all(), handler::getOrdersV1)
Konfiguriert einen Fallback-Verzweigungszweig, der abweichende Anfragen an den V1-Handler leitet.