Java ルート API
Spring Cloud Gateway サーバー MVC は、ルートを作成するデフォルトの方法として Spring WebMvc.fn RouterFunctions.Builder (Javadoc) を使用します。これは、WebMvc.fn RouterFunction (Javadoc) インスタンスです。
RouterFunctions.Builder
(Javadoc) インスタンスは、RouterFunctions.route() (Javadoc) を呼び出すことによって取得されます。
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
をリクエストメタデータとして追加します。
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 リクエスト属性の処理における不整合が修正されます。 |