У меня есть требование, по которому я должен перенаправить запрос на другую конечную точку, добавив несколько дополнительных заголовков (обычно токены OAuth).
Я попробовал ниже обработать один для запроса прокси.
fun proxy(request: ServerRequest, url:String, customHeaders: HttpHeaders = HttpHeaders.EMPTY): Mono<ServerResponse> {
val modifiedHeaders = getHeadersWithoutOrigin(request, customHeaders)
var webClient = clientBuilder.method(request.method()!!)
.uri(url)
modifiedHeaders.forEach{
val list = it.value.iterator().asSequence().toList()
val ar:Array<String> = list.toTypedArray()
webClient.header(it.key, *ar)
}
return webClient
.body(request.bodyToMono(), DataBuffer::class.java).exchange()
.flatMap { clientResponse ->
ServerResponse.status(clientResponse.statusCode())
.headers{
it.addAll(clientResponse.headers().asHttpHeaders())
}
.body(clientResponse.bodyToMono(), DataBuffer::class.java)
}
}
Входящие запросы всегда попадают в одну конечную точку прокси на моем сервере с целевым URL в заголовке. На сервере я читаю целевой URL, добавляю токены OAuth и пересылаю запрос на целевой URL. В этом случае я не хочу анализировать тело ответа. Отправьте ответ в нисходящем направлении.
Как реагировать на это?