Spring Web Reactive | 2. WebClient | 2.5. Filters
次の例のように、WebClient.Builderを通じてクライアントフィルター(ExchangeFilterFunction)を登録し、リクエストをインターセプトして変更できます。
Java
WebClient client = WebClient.builder()
.filter((request, next) -> {
ClientRequest filtered = ClientRequest.from(request)
.header("foo", "bar")
.build();
return next.exchange(filtered);
})
.build();
Kotlin
val client = WebClient.builder()
.filter { request, next ->
val filtered = ClientRequest.from(request)
.header("foo", "bar")
.build()
next.exchange(filtered)
}
.build()
フィルターは、認証などの横断的関心事に使用できます。次の例では、静的ファクトリーメソッドによる基本認証フィルターを使用します。
Java
import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication;
WebClient client = WebClient.builder()
.filter(basicAuthentication("user", "password"))
.build();
Kotlin
import org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication
val client = WebClient.builder()
.filter(basicAuthentication("user", "password"))
.build()
別のインスタンスを起点に、新しいWebClientインスタンスを作成できます。元のWebClientに影響を与えず、フィルターを追加または削除できます。次の例では、インデックス0に基本認証フィルターを追加します。
Java
import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication;
WebClient client = webClient.mutate()
.filters(filterList -> {
filterList.add(0, basicAuthentication("user", "password"));
})
.build();
Kotlin
val client = webClient.mutate()
.filters { it.add(0, basicAuthentication("user", "password")) }
.build()