Spring/WebClient
[WebClient] Context
blockbuddy93
2024. 3. 28. 14:30
Attributes 는 필터 체인에 정보를 전달하는 편리한 방법을 제공하지만, 이는 현재 요청에만 영향을 줍니다. 만약 flatMap을 통해 중첩된 추가 요청에 영향을 주거나 concatMap을 통해 실행된 후 추가적인 요청에 영향을 주는 정보를 전달하려면 Reactor Context를 사용해야 합니다.
Reactor Context는 모든 작업에 적용되도록 반응적인 체인의 끝에 채워져야 합니다. 예를 들어:
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", ...));