【Feign】Feign之间调用的参数传递问题(@RequestBody 和@RequestParam)

Feign调用接口时,都是需要进行参数传递的,一般可以分为两类

  1. 字符串参数传递,比如xml、json、string等
  2. 对象参数传递

字符串参数传递(@RequestParam)

@RequestParam注解用来接收字符串类型参数,有以下注意点

  1. 客户端@RequestParam注解的value属性必须指定值,不能为空,且要和服务端接口参数名保持一致
  2. 如果需要传递多个字符串参数,则使用多个@RequestParam注解与服务端接口参数保持一一对应即可

服务端

@ResponseBody
@PostMapping(value = "check")
public CheckAckVo check(String jsonParam) {
    FileCheckVo fileCheckVo = JacksonUtil.jsonToBean(jsonParam, FileCheckVo.class);
    
    return checkAck(taskId, OpStatusEnum.SUCCESS.getCode());
}

客户端

@FeignClient(value = "act-engine-web", fallbackFactory = PlatformUserFeignServiceFallBack.class)
public interface PlatformUserFeignService {

    @RequestMapping(value = "/engine/check", method = RequestMethod.POST)
    String check(@RequestParam(value = "jsonParam") String jsonParam);
}

对象参数传递(@RequestBody )

@RequestBody注解用来接收字符串类型参数,有以下注意点

  1. @RequestBody 注解在服务端和客户端都需要使用
  2. 参数名和参数类型在服务端和客户端需要保持一致

服务端

@ResponseBody
@PostMapping(value = "check")
public CheckAckVo check(@RequestBody FileCheckVo fileCheckVo) {

    //使用对象参数传递,则不需要再使用jackson进行转化
    //FileCheckVo fileCheckVo = JacksonUtil.jsonToBean(jsonParam, FileCheckVo.class);
    
    return checkAck(taskId, OpStatusEnum.SUCCESS.getCode());
}

客户端

@FeignClient(value = "act-engine-web", fallbackFactory = PlatformUserFeignServiceFallBack.class)
public interface PlatformUserFeignService {

    @RequestMapping(value = "/engine/check", method = RequestMethod.POST)
    String check(@RequestBody FileCheckVo fileCheckVo);
}

思考

  1. @RequestBody 进行对象参数传递时,需要引入参数类型依赖(FileCheckVo),此时最好是将这个依赖放入公共依赖包中,否则会增加服务端和客户端的耦合度。
  2. 个人感觉@RequestBody 更多的用于系统间进行文件传递等(将文件读为byte数组,和其他属性组装成一个对象进行传递)
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值