Fegin调用传参会拼接在url后面的问题解决办法(@SpringQueryMap并不能解决)

问题发现场景

原fegin的代码如下

@FeignClient(value = "zz-atexpress",contextId = "AtExpressClient")
public interface AtExpressClient {
//@ApiOperation("获取at公式的值")
@PostMapping("/zzAtexpress/exeuteAtExpress")
ResultInfo exeuteAtExpress(@RequestParam String processInstId
, @RequestParam String taskId, @RequestParam String atExpress);
}

这样 当我传递的值atExpress=aaa&token=@token时 那么fegin就会把参数拼接在url后面导致

实际atExpress接收到的值是aaa 而不是aaa&token=@token

参数带@RequestParam的都会拼接在url后面 不管是post还是get contenttype值是否其他的任何值

解决办法如下

@FeignClient(value = "zz-atexpress",contextId = "AtExpressClient")
public interface AtExpressClient {
//这样可以 但是要组装map
@PostMapping("/zzAtexpress/exeuteAtExpress")
ResultInfo exeuteAtExpress(@SpringQueryMap Map<String,?> param);
}

这样 调用之前 要组装map ,但是参数不会拼接在url之后导致 接收参数错误

或者修改接收参数为@requestBody 也可以

据说以下方式不用修改接收参数端的代码 也能解决  但并未尝试 先贴出来

 
//feign接口写法
@RequestMapping(value = "/task/taskcenter/addTask", method = RequestMethod.POST)
Result<?> addTaskMap(@RequestBody MultiValueMap<String, String> queryParam);
 
//业务代码中调用方法:此处的value可以使用Object类型的
MultiValueMap paramMap = new LinkedMultiValueMap<String, String>();
 
paramMap.add("taskContent", taskContent);
paramMap.add("taskTitle", taskTitle);
 
//feign调用
Result<?> result = taskFeign.addTaskMap(paramMap);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值