SpringBoot 字节数组自动转化为Base64格式的问题

SpringBoot 字节数组自动转化为Base64格式的问题

问题描述

Spring Boot微服务架构,两个服务间请求数据,发现byte数组格式的字段会自动转化为Base64格式

问题研究

经过研究发现,这个是因为RestTemplate在发起exchange的调用时候,会把字段类型为字节数组转化为Base64格式,然后再发起请求到目标服务。
代码位置:com.fasterxml.jackson.databind.ser.std.ByteArraySerializer这个类的serialize方法

    public void serialize(byte[] value, JsonGenerator g, SerializerProvider provider) throws IOException {
        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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值