千家信息网

SpringCloud feign对象传参和普通传参及遇到的坑如何解决

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"SpringCloud feign对象传参和普通传参及遇到的坑如何解决",在日常操作中,相信很多人在SpringCloud feign对象传参和普通传参及遇到的坑如何解决问题上存在疑
千家信息网最后更新 2026年11月02日SpringCloud feign对象传参和普通传参及遇到的坑如何解决

这篇文章主要介绍"SpringCloud feign对象传参和普通传参及遇到的坑如何解决",在日常操作中,相信很多人在SpringCloud feign对象传参和普通传参及遇到的坑如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"SpringCloud feign对象传参和普通传参及遇到的坑如何解决"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

feign对象传参和普通传参及遇到的坑

对象传参

使用@RequestBody来指定传参对象

@RequestMapping(value = "/v2/matterCode/genCode", method = RequestMethod.POST)    ResultResponse getCode(@RequestBody MatterCodeBO matterCodeBO);

注意:@RequestBody在一个方法内有且只有一个,不能同时存在两个!

普通传参

普通传参使用@RequestParam来指定参数

@RequestMapping(value = "taskApiController/getAll", method = RequestMethod.POST)List getAll(@RequestParam("name") String name);

注意:@RequestParam必须指定参数名("name"),否则报错:RequestParam.value() was empty on parameter 0

遇到的坑-1

首先再次强调Feign是通过http协议调用服务的,重点是要理解这句话,

如果FeignClient中的方法有@PostMapping注解 ,则微服务TaskApiController中对应方法的注解也应当保持一致为@PostMapping,如果不一致,则会报404的错误

调用失败后会触发它的熔断机制,如果@FeignClient中不写@FeignClient(fallback = TaskFeignClientDegraded.class),会直接报错

11:00:35.686 [http-apr-8086-exec-8] DEBUG c.b.p.m.b.c.AbstractBaseController - Got an exception
com.netflix.hystrix.exception.HystrixRuntimeException: TaskFeignClient#getAll() failed and no fallback available.
at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:819)
at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:804)

遇到的坑-2

报错信息:

feign.FeignException:status 400 reading xxx#xxxx(String); content:

原因:因为feign的那个方法使用的@ReqestParam注解,这个接收的参数长度过长造成的,这也是feign就算使用post方法,参数也会放在请求地址后面,而不是放在请求体里面。

解决办法:将参数封装成对象,使用@RequestBody标明参数

feign传递复杂参数对象需要注意的地方

传递复杂参数对象需要用Post

另外需要注意,Feign不支持使用GetMapping 和PostMapping

@RequestMapping(value="user/save",method=RequestMethod.POST)

在传递的过程中

复杂对象使用@RequestBody进行注解,同时接收端也需要使用@RequestBody这个注解。

我遇一个坑:

消费端使用了@RequestBody而服务端没有接收@RequestBody,这时参数会接收不完整。

//消费端    @RequestMapping(value="user/save",method=RequestMethod.POST)    public User save(@RequestBody User user);//服务端@PostMapping("save")    public User save(@RequestBody User user) {        System.out.println(user);        return UserService.save(user);    }

到此,关于"SpringCloud feign对象传参和普通传参及遇到的坑如何解决"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

对象 参数 普通 方法 注解 学习 服务 复杂 一致 同时 更多 帮助 消费 实用 接下来 两个 信息 再次 办法 原因 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 互联网扶贫科技 九亚互联网科技 互联网养老 桔豆科技 无锡溥仪互联网科技有限公司 互联网系的金融科技公司 港股科技和互联网 昊天互联网科技有限公司 互联网在线教育科技创业 佛山市拉法互联网科技有限公司 为客找房互联网科技公司怎么样 怎样加入科技互联网 陕西云淼互联网科技公司 全球科技与互联网公司市值变化 数字互联网科技有限公司 杭州融税互联网科技有限公司 盐城市攀科互联网科技有限公司 10位科技互联网大佬 北京瑞云互联网科技有限公司 互联网科技创业有什么好项目 科技互联网政务服务 河南真二互联网科技有限公司 互联网科技ppt模板 齐家互联网科技有限公司 大白互联网科技 苏州五指互联网络科技有限 翼展科技 首家互联网医院 特约风豹互联网科技为什么扣费 华中科技大学互联网的牛人 科技发展第三阶段互联网时代
0