feign调用文件上传接口,用feign请求参数不对
目录
假装客户端无法接收传输参数。先说流程。让我们看看代码是如何解决假传输参数!坑!
在10-1010上,当使用feign client在不同的服务之间进行调用时,出现了提供者无法获取参数的问题。请在这里记录它。
00-1010在我的微服务中,有几个角色,分别是consumer:服务的消费者,provider:服务的消费者,还有一个feign,主要是提供者的接口形式。然后,消费者依靠feign来调用提供者中的服务。我在provider中打印获得的参数,这些参数总是空的。
在这里,消费者、假装、提供者都是独立的模块。
00-1010首先是provider:提供拯救用户的服务。
@ rest controller @ request mapping(/user )@ SLF 4 jpublicclassusercontroller { @ post mapping(/save )公共字符串save(user user){ log . info( provider 3360用参数处理保存请求:{} ,user);返回“成功”;}feign代码:注意这个模块添加了佯装依赖。
@ FeignClient(name= service-provider ,fallback=userHystrix.class)公共接口User controller { @ post mapping(/User/save )字符串保存(User用户);}注意然后使用consumer通过feign调用provider:.的消费依赖于feign,以及上面的代码:
@ rest controller @ SLF 4j public class FeignController { @ auto wired private user controller user controller;@ request mapping(/feign )public String test(){ User User=new User();user.setName(张三);user . setage(10);Log.info(假装呼叫开始。);string result=user controller . save(user);Log.info (Feign3360 returns: {} ,result);返回“成功”;}}各自服务启动后,浏览器调用消费者的/feign请求,观察提供者日志,发现获取的用户参数没有值。
00-1010将@RequestBody添加到provider中方法的用户参数前面。请注意下面代码中的注释。
@ rest controller @ request mapping(/user )@ SLF 4 jpublic class user controller { @ post mapping(/save )//注意用requestBody,否则很容易收到参数public string save(@ request body user user){ log . info( provider 3360处理保存请求,参数为:{} ,user);返回“成功”;}}好吧,为了方便大家的查看,请给出以下项目结构:
00-1010下面是由FeignClient注释的接口中的一个抽象方法。
@ post mapping(/biz task/selectNonCompleteByShopIds )ListBizTask selectNonCompleteByShopIds(@ request body list long shopid);注意这里的接口参数shopIds。此方法的参数列表也必须与抽象方法一致,否则不会收到参数。
以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。