0 Tage Serie
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.