springcloud中使用feign方式上传文件,spring cloud 怎么通过feign调用服务

  springcloud中使用feign方式上传文件,spring cloud 怎么通过feign调用服务

  

目录

假造对象传递参数和普通传递参数和遇到的坑对象传递参数-普通传递参数遇到的坑-遇到的坑-2假造复杂参数对象传递注意事项。传递复杂的参数对象需要在传递过程中进行Post。

 

  

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

 

  00-1010使用@RequestBody指定参数对象。

  @ request mapping(value=/v2/matter code/gen code ,method=RequestMethod。POST)ResultResponseString get code(@ request body MatterCodeBO MatterCodeBO);注意:@RequestBody在一个方法中有且只有一个,不能同时有两个!

  00-1010普通参数使用@RequestParam指定参数。

  @ request mapping(value= taskApiController/get all ,method=RequestMethod。POST)listaskvo get all(@ request param( name )字符串名称);注意:@RequestParam必须指定参数名( name ),否则将给出错误:requestparam.value()在parameter0上为空。

  00-1010首先再次强调一下,Feign通过http协议调用服务。关键是要理解这句话,

  如果FeignClient中的方法有@PostMapping注释,那么微服务TaskApiController中对应方法的注释也应该和@PostMapping一致。否则,将报告错误404。

  当呼叫失败时,它将触发其熔断机制。如果@FeignClient(fallback=taskfeengclientdegraded . class)没有用@ FeignClient编写,会直接报错。

  11:00:35.686[http-apr-8086-exec-8]DEBUG c . b . p . m . b . c . abstractbasecontroller-得到一个异常com . Netflix . hy strix . exception . hystrixruntimeexception : TaskFeignClient # getAll()失败,没有回退可用。at com . Netflix . hy strix . abstract command $ 22 . call(abstract command . Java :819)at com . Netflix . hy strix . abstract command $ 22 . call(abstract command . Java :804)

  00-1010错误消息:

  假装。FeignException:status 400读取xxx#xxxx(字符串);内容:

  因为原因:,中的feign方法使用了@ReqestParam注释,所以收到的参数太长,这就是为什么即使feign使用post方法,参数也会放在请求地址后面,而不是放在请求正文中。

  将解决办法:参数封装到对象中,并使用@RequestBody来表示参数。

  

对象传参

 

  00-1010还要注意,Feign不支持使用GetMapping和PostMapping。

  @RequestMapping(value=用户/保存,method=RequestMethod。帖子)

  00-1010复杂对象用@RequestBody注释,接收方也需要使用注释@RequestBody。

  我遇一个坑:

  当消费者使用@RequestBody,而服务器没有接收到@RequestBody时,将会不完整地接收到该参数。

  //consumer @ request mapping(value= user/save ,method=request method . post)public user save(@ requestbodyuser user);//server @ post mapping( save )public user save(@ request body user){ system . out . println(user);返回UserService.save(用户);}以上是我的亲身经历。希望能给大家一个参考,也希望大家能支持盛行的IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: