问题描述
Spring Boot微服务架构,两个服务间请求数据,发现byte数组格式的字段会自动转化为Base64格式
问题研究
经过研究发现,这个是因为RestTemplate在发起exchange的调用时候,会把字段类型为字节数组转化为Base64格式,然后再发起请求到目标服务。
代码位置:com.fasterxml.jackson.databind.ser.std.ByteArraySerializer这个类的serialize方法
publicvoidserialize(byte[] value,JsonGenerator g,SerializerProvider provider)throwsIOException{ g.writeBinary(provider.getConfig().getBase64Variant(), value,0, value.length);}
依赖关系为:spring-boot-starter-web->spring-boot-starter-json->com.fasterxml.jackson.core->jackson-databind
结论
RestTemplate的exchange调用会把Request参数里面的字节数组转为Base64格式,这样做的原因可能有很多,我觉得有一点这样做的好处是可以节省空间,请参考如下
https://stackoverflow.com/questions/67156878/why-does-jackson-convert-byte-array-to-base64-string-on-converting-to-json
热门文章
- pyspark结合hive使用 spark on hive方式开发代码附上代码实例
- 3月18日 | Free Trojan Node节点订阅每天更新22.9M/S免费节点订阅链接
- 3月19日 | Free Trojan Node节点订阅每天更新20.1M/S免费节点订阅链接
- 2月16日 | Free Trojan Node节点订阅每天更新20.9M/S免费节点订阅链接
- 动物疫苗是疫苗吗还是疫苗呢 动物疫苗是疫苗吗还是疫苗呢图片
- Mac安装Kubernetes-minikube专治各种坑
- 1月17日 | Free Trojan Node节点订阅每天更新19.3M/S免费节点订阅链接
- 微信小程序的自定义导航栏组件和部分数据处理方法
- 免费领养幼犬拉布拉多(拉布拉多哪里可免费领养)
- 3月2日 | Free Trojan Node节点订阅每天更新19.1M/S免费节点订阅链接