最新の安定バージョンについては、Spring Cloud Gateway 5.0.1 を使用してください! |
CacheRequestBody GatewayFilter ファクトリ
状況によっては、リクエスト本文を読み取る必要があります。リクエストは一度しか読み取れないため、リクエストボディをキャッシュする必要があります。CacheRequestBody フィルターを使用して、リクエスト本文をキャッシュしてからダウンストリームに送信し、exchange 属性から本文を取得できます。
次のリストは、リクエスト本文 GatewayFilter をキャッシュする方法を示しています。
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return builder.routes()
.route("cache_request_body_route", r -> r.path("/downstream/**")
.filters(f -> f.prefixPath("/httpbin")
.cacheRequestBody(String.class).uri(uri))
.build();
}application.yml
spring:
cloud:
gateway:
routes:
- id: cache_request_body_route
uri: lb://downstream
predicates:
- Path=/downstream/**
filters:
- name: CacheRequestBody
args:
bodyClass: java.lang.StringCacheRequestBody はリクエスト本文を抽出し、本文クラス (前の例で定義された java.lang.String など) に変換します。次に、CacheRequestBody は、ServerWebExchangeUtils.CACHED_REQUEST_BODY_ATTR で定義されたキーを使用して、ServerWebExchange.getAttributes() から使用可能な属性にそれを配置します。
| このフィルターは、HTTP (HTTPS を含む) リクエストでのみ機能します。 |