Я хочу сделать прокси контроллер. Я получаю один HTTP-запрос и мне нужно передать его другим службам, затем скомпоновать ответы из ответов в один и отправить обратно. Если один ответ содержит исключение, ResponseEntity не должно быть с кодом 200 (ОК).
@PostMapping("**")
public ResponseEntity<String> processIn(@RequestHeader HttpHeaders headers, @RequestBody String body, ServerHttpRequest request) {
Mono<String> firstAnswer = sendRequest(headers, body, "https://localhost:1443");
Mono<String> secondAnswer = sendRequest(headers, body, "http://localhost:8080");
return ResponseEntity.ok().body(format("1: %s \n 2: %s", firstAnswer, secondAnswer));
}
private Mono<String> sendRequest(HttpHeaders headers, String body, String url) {
return webClient.post()
.uri(new URI(url))
.headers(httpHeaders -> new HttpHeaders(headers))
.bodyValue(body)
.retrieve()
.bodyToMono(String.class)
.doOnNext(ans -> log.info(">>>>request to {} : {}", url, ans))
.doOnError(err -> log.error(">>>>error sending to {}", url));
}