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已经被我们修改成功了

PS:
还有类似,既然个人信息这么敏感,是不是类似一些接口返回数据需要做统一的加密呢?
如需要,那么也可以通过配置化读取需要加密的ur列表,然后通过exchange把url拿出来做匹对,对responseData 做加密处理。
最后
这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档
祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!
感谢大家的支持!!
做匹对,对responseData 做加密处理。
最后
这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档
祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!
感谢大家的支持!!
[外链图片转存中…(img-tK8xZ7Bs-1650440535465)]