SpringCloud Feign调用服务接口时,GET请求变成POST请求报错 _

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud Feign调用服务接口时,GET请求变成POST请求报错 _相关的知识,希望对你有一定的参考价值。

参考技术A 原来像这种放在Body里传过来的get方式 必须feign调用的时候

@GetMapping("/demofeigngetresbody")

public  Resultdemofeigngetresbody(TestDemo testDemo)

要用 @RequestParam 把每一个参数都写出来才算get不然默认就是POST找不到方法了

@FeignClient("user-main")publicinterface UserFeignClient

    @GetMapping("/query_user")

    Result> getUserList(@RequestParam Integer age, @RequestParam String name, @RequestParam(required =false) String job);



现在最重点的来了

关于feign的请求方式 下面的一定要注意

feign消费服务时,以GET方式请求的条件:

如果想让服务消费者采用GET方式调用服务提供者,那么需要:

1.服务消费者这边feign调用时,在所有参数前加上@RequestParam注解。

2.服务消费者这边feign调用时,指明为GET方式(注:如果不指明method,那么在条件1满足的情况下,采用的是默认的GET方式)。

注:这里条件1和条件2,是“且”的关系(都满足时,才为GET)。

feign消费服务时,以POST方式请求的条件:

如果想让服务消费者采用POST方式调用服务提供者,那么只需要:

1.服务消费者这边feign调用时,在所有参数前加上@RequestParam注解,并指明feign消费服务的方式为POST。

2.服务消费者这边feign调用时,有且只有一个参数前为@RequestBody或什么也没有(如果有多个参数,那么其余参数前必须有@RequestParam)。

注:这里条件1和条件2,是“或”的关系(当至少一个满足时,即为POST)。

注:在服务消费者中,使用feign消费服务时,如果参数前什么也不写,那么默认是由@RequestBody指明的。

即:只要不满足GET方式请求,那么POST方式请求是一定支持的。

链接:https://www.jianshu.com/p/17a10c8b32cb

以上是关于SpringCloud Feign调用服务接口时,GET请求变成POST请求报错 _的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud系列六:Feign接口转换调用服务(Feign 基本使用Feign 相关配置)

SpringCloud学习——Feign负载均衡

springcloud-OpenFeign服务接口调用

微服务之五:轻松搞定SpringCloud微服务-调用远程组件Feign

SpringCloud之Feign:REST客户端

SpringCloud 声明式服务调用:Feign