上下文

属性 提供了一种方便的方式来将信息传递给过滤器链,但它们只影响当前请求。如果您想传递影响到嵌套的其他请求的信息,例如通过 flatMap,或者在之后执行的请求,例如通过 concatMap,那么您需要使用 Reactor 的 Context

Reactor 的 Context 需要在响应式链的末尾填充,以便应用到所有操作。例如:

  • Java

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 -> {
				// 执行嵌套请求(上下文自动传播)...
		})
		.contextWrite(context -> context.put("foo", ...));