Я использую весенний облачный шлюз для своего проекта. Я написал одну настраиваемую фабрику фильтров для генерации подписи HMAC, которая требует полезной нагрузки запроса. Я включил для readBody (String.class, requestBody - ›true) значение true в определении маршрута и из атрибута cachedRequestBody, я смог получить полезные данные запроса в моем настраиваемом фильтре. со следующей весенней загрузкой версии 2.1.3.RELEASE и весенней облачной версии 2.1.1.RELEASE.
Теперь после обновления версии Spring boot до 2.3.3.RELEASE и Spring Cloud версии 2.2.4.RELEASE тот же код не работает.
предикат readbody не работает с последней весенней облачной версией? любое предложение будет полезным.
Образец фабрики нестандартных фильтров:
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
HttpMethod method = exchange.getRequest().getMethod();
String httpVerb = method.name();
ServerHttpRequest httpRequest = exchange.getRequest();
String requestPayload = exchange.getAttribute("cachedRequestBodyObject");
signature = generateSignature(....);
ServerHttpRequest.Builder builder = httpRequest.mutate().header(HttpHeaders.AUTHORIZATION, signature)
ServerHttpRequest downStreamRequest= (config.getPath()!=null?builder.path(config.path):builder).build();
return chain.filter(exchange.mutate().request(downStreamRequest).build());
};
}