You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.0 KiB
37 lines
1.0 KiB
[[webflux-client-context]] |
|
= Context |
|
|
|
xref:web/webflux-webclient/client-attributes.adoc[Attributes] provide a convenient way to pass information to the filter |
|
chain but they only influence the current request. If you want to pass information that |
|
propagates to additional requests that are nested, e.g. via `flatMap`, or executed after, |
|
e.g. via `concatMap`, then you'll need to use the Reactor `Context`. |
|
|
|
The Reactor `Context` needs to be populated at the end of a reactive chain in order to |
|
apply to all operations. For example: |
|
|
|
[tabs] |
|
====== |
|
Java:: |
|
+ |
|
[source,java,indent=0,subs="verbatim,quotes",role="primary"] |
|
---- |
|
WebClient client = WebClient.builder() |
|
.filter((request, next) -> |
|
Mono.deferContextual(contextView -> { |
|
String value = contextView.get("foo"); |
|
// ... |
|
})) |
|
.build(); |
|
|
|
client.get().uri("https://example.org/") |
|
.retrieve() |
|
.bodyToMono(String.class) |
|
.flatMap(body -> { |
|
// perform nested request (context propagates automatically)... |
|
}) |
|
.contextWrite(context -> context.put("foo", ...)); |
|
---- |
|
====== |
|
|
|
|
|
|
|
|