揭秘幸运《如何达到盈利7码8码滚雪球公式走势规律技巧分享》飞艇计划群

很多朋友在使用SpringCloudGateway的时候可能都碰到过以下几个问题99247405

SpringCloudGateway中如何读取Post请求体
    private BodyInserter getBodyInserter(ServerWebExchange exchange) {        ServerRequest serverRequest = new DefaultServerRequest(exchange);        Mono<String> modifiedBody = serverRequest.bodyToMono(String.class)                .flatMap(body -> {                   //这里的body就是Post的请求体                });        BodyInserter bodyInserter = BodyInserters.fromPublisher(modifiedBody, String.class);        return bodyInserter;    }
SpringCloudGateway中Post请求参数只能读取一次

这是因为Gateway默认使用的是SpringWebflux,解决这个问题需要容重新构造一个request来替换原先的request

HttpHeaders headers=new HttpHeaders();        CachedBodyOutputMessage outputMessage = new CachedBodyOutputMessage(exchange, headers);        ServerHttpRequestDecorator decorator = this.getServerHttpRequestDecorator(exchange,outputMessage);       ServerHttpRequestDecorator decorator = new ServerHttpRequestDecorator(                exchange.getRequest()) {            @Override            public Flux<DataBuffer> getBody() {                return outputMessage.getBody();            }        };

当ServerHttpRequestDecorator构建完成之后需要在拦截器中使用如下方法替换原先的request

chain.filter(exchange.mutate().request(decorator).build());
SpringCloudGateway中如何读取后段服务的返回数据

与上方替换request的思路一致,替换response即可

private ServerHttpResponse getServerHttpResponse(ServerWebExchange exchange) {        ServerHttpResponse originalResponse = exchange.getResponse();        DataBufferFactory bufferFactory = originalResponse.bufferFactory();        ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(originalResponse) {

@Override public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
Flux<DataBuffer> flux = null; if (body instanceof Mono) { Mono<? extends DataBuffer> mono = (Mono<? extends DataBuffer>) body; body = mono.flux();
} if (body instanceof Flux) { flux = (Flux<DataBuffer>) body; return super.writeWith(flux.buffer().map(dataBuffers -> { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); dataBuffers.forEach(i -> { byte[] array = new byte[i.readableByteCount()]; i.read(array); DataBufferUtils.release(i); outputStream.write(array, 0, array.length); }); String result = outputStream.toString(); try { if (outputStream != null) { outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } log.info("后端返回数据:{}", result); return bufferFactory.wrap(result.getBytes()); })); }
log.info("降级处理返回数据:{}" + body); return super.writeWith(body); }
}; return decoratedResponse; }

上方是获取新的response,获取到新的之后和之前的套路一样,这样操作:

return chain.filter(exchange.mutate().request(decorator).response(decoratedResponse).build());

可能有的同学会碰到即使按照我上述的方法重写了response但是也无法读取到返回数据,这个原因可能是因为拦截器的优先级配置有问题,只需要实现Ordered接口并且重写getOrder方法,然后设置优先级小于-1即可

   @Override    public int getOrder() {        return -2;    }

幸运      飞 艇5678码个人独家心法走势技巧分享与你,#芯芯揭秘:幸运      飞艇滚雪球冠亚军和值大小单双#

揭秘幸运        飞艇怎样回血上岸滚雪球走势规律技巧公式隐藏玩法

芯芯教你如何看破幸运         飞艇滚雪球走势规律技巧分析隐藏玩法

芯芯带你回血幸运        飞艇78码滚雪球冠亚和值定位技巧走势规律

北京        赛车滚雪球78码最新分配规律不为人知的78码走势技巧玩法

扫描二维码关注公众号,回复: 8086593 查看本文章

北京            飞艇56码走势78码滚雪球技巧及全天精准计划

揭秘《极速幸运          飞艇78码冠亚军和值大小单双滚雪球不为人知的玩法》

分享幸运        飞艇定位胆老玩家滚雪球冠军公式规律的窍门技巧分享交流

北京          赛车幸运       飞艇最新7码8码技巧规律看懂走势56码公式|滚雪球|赛车|教学

芯芯幸运        飞艇冠亚军5678码滚雪球走势分析技巧经验分享

芯芯幸运       飞艇冠亚军5678码滚雪球规律技巧分析走势公式

芯芯幸运        飞艇5678码滚雪球规律技巧走势分析给大家

芯芯分析幸运        飞艇56码78码滚雪球规律技巧走势分析方法

幸运       飞艇《北京      赛车PK10冠军六码走势规律技巧》345678模式长期稳赢公式分享

高手揭秘《幸运飞       艇规律技巧》与个人实战经验北京      赛车分享给大家交流

高手北京赛车深入研究《幸运        飞艇技巧》提高命中率!

2019最新《幸运       飞艇技巧规律》经验分享北京       赛车给大家交流

《幸运      飞艇北    京赛车走势技巧规律》个人经验和公式分享给大家

技巧揭秘《幸运      飞艇北京     赛车技巧计划》稳赚5码经验分享给大家

幸运       飞艇北京      赛车技巧怎么赌单双老玩家结合八年实战经验推荐

幸运    飞艇北京       赛车56码规律技巧走势图公式经验分享给大家

分享幸运         飞艇北京       赛车56码计划倍投方案与五码连中技巧扣

<幸运      飞艇       北京     赛车>全天计划56码走势78码滚雪球技巧分享规律定位

高手揭秘《幸运      飞艇北京     赛车56码必中技巧公式规律》经验分享

腾讯分分彩<幸运     飞艇北京      赛车 >怎么玩才能稳赢技巧揭密56码倍投

北京    赛车幸运       飞艇78码滚雪球玩法与56码倍投技巧分析扣

教孩子的方法需要做哪些北京幸运       飞艇赛车计划技巧教学56码倍投

猜你喜欢

转载自www.cnblogs.com/78591673qqqq/p/11992536.html