0
点赞
收藏
分享

微信扫一扫

SpringCloud GateWay 网关 在GlobalFilter 拿出返回数据response

JakietYu 2022-04-21 阅读 45

return super.writeWith(fluxBody.buffer().map(dataBuffers -> {

List list = Lists.newArrayList();

dataBuffers.forEach(dataBuffer -> {

try {

byte[] content = new byte[dataBuffer.readableByteCount()];

dataBuffer.read(content);

DataBufferUtils.release(dataBuffer);

list.add(new String(content, “utf-8”));

} catch (Exception e) {

log.info(“加载Response字节流异常,失败原因:{}”, Throwables.getStackTraceAsString(e));

}

});

String responseData = joiner.join(list);

System.out.println(“responseData:”+responseData);

byte[] uppedContent = new String(responseData.get Java开源项目【ali1024.coding.net/public/P7/Java/git】 Bytes(), Charset.forName(“UTF-8”)).getBytes();

originalResponse.getHeaders().setContentLength(uppedContent.length);

return bufferFactory.wrap(uppedContent);

}));

}

}

return super.writeWith(body);

}

@Override

public Mono writeAndFlushWith(Publisher<? extends Publisher<? extends DataBuffer>> body) {

return writeWith(Flux.from(body).flatMapSequential(p -> p));

}

};

return chain.filter(exchange.mutate().response(response).build());

}

}

调用接口可以看到,response数据已经被我们拎出来了:

那么我们简单做个处理,

/**

  • 返回数据处理

  • @param responseData

  • @return

*/

private String responseHandle(String responseData) {

String responseResultJson = null;

try {

JSONObject jsonObject = JSONObject.parseObject(responseData);

jsonObject.put(“message”, “JCccc 收藏+关注”);

responseResultJson = jsonObject.toJSONString();

} catch (Exception e) {

log.info(“返回数据处理转化失败,异常信息={}”,e.getMessage());

return responseData;

}

return responseResultJson;

}

再次请求,可以看到:

返回数据里面的message已经被我们修改成功了

![](https://img-blog.csdnimg.cn/20210817165539305.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1Mzg3OTQw,size_16,color_FFFFFF,t_70)

PS:

还有类似,既然个人信息这么敏感,是不是类似一些接口返回数据需要做统一的加密呢?

如需要,那么也可以通过配置化读取需要加密的ur列表,然后通过exchange把url拿出来做匹对,对responseData  做加密处理。

最后

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

image.png

做匹对,对responseData  做加密处理。

最后

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

[外链图片转存中…(img-tK8xZ7Bs-1650440535465)]

举报

相关推荐

0 条评论