使用@JsonProperty注解导致FeignClient调用获取不到参数

解决FeignClien调用过程中,使用@JsonProperty注解导致参数接收不到
  • 使用场景
  • 使用的技术是spring-kcloud服务,并使用feignClient组件
  • 在对接第三方的时候发现他们的请求参数和返回参数大小写都有,不易阅读,也不符合公司的编码规范,就采用了@JsonProperty对属性进行处理
  • 单个应用使用@JsonProperty 的时候并没有问题,结果和我们想要的一样

接收不到参数的场景

  • 当我们对接三方的服务,就叫(provider-third-server)吧,然后我们的api服务,就叫(app-api) 吧
  • 请求参数类,第三方参数全是大写开头,我们要转换为小写
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 封装第三方接口请求类
 *
 * @author liouwb
 * @time 2022-09-26
 */
@Data
@ApiModel("封装第三方接口请求类")
public class ThirdParam {
    @ApiModelProperty(value = "姓名", required = true, position = 1)
    private String name;

    @ApiModelProperty(value = "年龄", required = true, position = 2)
    private Integer age;
}

在这里插入图片描述

  • 通过上图可以看到,thirdParam经过了多次序列化和反序列化。这时想app-apij接收到的前端参数是小驼峰,传给provider-third-serverprovider-third-server传给第三方的时候是大写开头,这个时候单个@JsonProty就满足不了了
解决方案
  • 思路:反序列化的时候使用@JsonAlias注解可以接收大写和小写参数,序列化的时候使用JsonProperty注解序列化为大写,我们的请求的在使用的使用也是小驼峰符合代码规范的
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 封装第三方接口请求类
 *
 * @author liouwb
 * @time 2022-09-26
 */
@Data
@ApiModel("封装第三方接口请求类")
public class ThirdParam {
    @ApiModelProperty(value = "姓名", required = true, position = 1)
    private String name;

    @ApiModelProperty(value = "年龄", required = true, position = 2)
    private Integer age;

    @JsonProperty("Name")
    public String getName() {
        return name;
    }

    @JsonAlias(value = {"name", "Name"})
    public void setName(String name) {
        this.name = name;
    }

    @JsonProperty("Age")
    public Integer getAge() {
        return age;
    }

    @JsonAlias(value = {"age", "Age"})
    public void setAge(Integer age) {
        this.age = age;
    }
}
  • 这样我们就可以使用同一个类,接收前端传递的name参数,经过feignclient或者其他请求调用的时候经过处理,最后调用三方服务的时候传递Name参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值