13. 流畅的 Java 路由 API

为了允许在 Java 中进行简单配置,请使用RouteLocatorBuilderbean 包括一个流畅的 API。 以下列表显示了它的工作原理:spring-doc.cadn.net.cn

示例 69.GatewaySampleApplication.java
// static imports from GatewayFilters and RoutePredicates
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder, ThrottleGatewayFilterFactory throttle) {
    return builder.routes()
            .route(r -> r.host("**.abc.org").and().path("/image/png")
                .filters(f ->
                        f.addResponseHeader("X-TestHeader", "foobar"))
                .uri("http://httpbin.org:80")
            )
            .route(r -> r.path("/image/webp")
                .filters(f ->
                        f.addResponseHeader("X-AnotherHeader", "baz"))
                .uri("http://httpbin.org:80")
                .metadata("key", "value")
            )
            .route(r -> r.order(-1)
                .host("**.throttle.org").and().path("/get")
                .filters(f -> f.filter(throttle.apply(1,
                        1,
                        10,
                        TimeUnit.SECONDS)))
                .uri("http://httpbin.org:80")
                .metadata("key", "value")
            )
            .build();
}

这种样式还允许更多自定义谓词断言。 定义的谓词由RouteDefinitionLocatorbean 使用 logical 组合and. 通过使用流畅的 Java API,您可以使用and(),or()negate()运算符Predicate类。spring-doc.cadn.net.cn