最新の安定バージョンについては、Spring Cloud Gateway 4.3.2 を使用してください!

Java ルート API

Spring Cloud Gateway サーバー MVC は、ルートを作成するデフォルトの方法として Spring WebMvc.fn RouterFunctions.Builder (Javadoc) を使用します。これは、WebMvc.fn RouterFunction (Javadoc) インスタンスです。

RouterFunctions.Builder (Javadoc) インスタンスは、RouterFunctions.route() (Javadoc) を呼び出すことによって取得されます。

GatewaySampleApplication.java
import static org.springframework.web.servlet.function.RouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.uri;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;

class SimpleGateway {
    @Bean
    public RouterFunction<ServerResponse> getRoute() {
        return route().GET("/get", http())
            .before(uri("https://example.org"))
            .build();
    }
}

RouterFunctions.Builder には、上記の /get など、パス述語と組み合わせた各 HTTP メソッド (GET、POST など) のメソッドがあります。最後のパラメーターは HandlerFilterFunction で、この場合は HandlerFunctions.http() です。追加の RequestPredicate パラメーター用の各 HTTP メソッドのオーバーロードされたメソッドと、一般的に使用される汎用の route(RequestPredicate, HandlerFunction) メソッドがあります。

RouterFunctions.Builder のゲートウェイ MVC 実装

一部の高度なフィルターでは、属性をリクエストするためにメタデータを追加する必要があります。これに対応するために、org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions クラスがあります。次に、GatewayRouterFunctions.route(String routeId) creates a `RouterFunctions.Builder インスタンスは "before" フィルターを追加して、routeId をリクエストメタデータとして追加します。

GatewaySampleApplication.java
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.uri;
import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;

class SimpleGateway {
    @Bean
    public RouterFunction<ServerResponse> getRoute() {
        return route("simple_route").GET("/get", http())
            .before(uri("https://example.org"))
            .build();
    }
}

ゲートウェイ MVC ハンドラー関数

さまざまな RouterFunctions.Builder メソッドには HandlerFunction<ServerResponse> が必要です。MVC ゲートウェイによってプロキシされるルートを作成するために、org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions で HandlerFunction 実装が提供されます。最も基本的なのは http() HandlerFunction です。関数は org.springframework.cloud.gateway.server.mvc.common.MvcUtils.GATEWAY_REQUEST_URL_ATTR リクエスト属性で URI を探します。これにより、負荷分散などの動的ターゲットで URI を設定できます。

バージョン 4.1.7 以降、HandlerFunctions.http(String) および HandlerFunctions.http(URI) は非推奨になりました。代わりに、HandlerFunctions.http() を BeforeFilterFunctions.uri() フィルターと組み合わせて使用してください。これにより、ルート URL リクエスト属性の処理における不整合が修正されます。