原因:在使用openfeign远程调用的时候,使用get请求时候发现,如果feign里面传的是实体,当然接口里面也是需要传实体,但是发现出错了,后来去官网找了一下,发现get请求不支持传入Java实体对象,只能一个参数一个参数的传,当然如果你需要传入一个实体对象,也可以使用注解的形式,请看下面的解决方法:
参考官网:Spring Cloud OpenFeign
解决方案,使用注解:
@SpringQueryMap
参考官网的示例:
在controller里面则是使用对象接收的接口,使用openfeign调用。
pojo:
// Params.java
public class Params {
private String param1;
private String param2;
// [Getters and setters omitted for brevity]
}
feign:
@FeignClient("demo")
public interface DemoTemplate {
@GetMapping(path = "/demo")
String demoEndpoint(@SpringQueryMap Params params);
}
这样子就可以使用对象传递了,如果说不用这个注解应该怎么去处理呢,可以参考如下:
@FeignClient("demo")
public interface DemoTemplate {
@GetMapping(path = "/demo")
String demoEndpoint(
@RequestParam("param1") String param1,
@RequestParam("param2") String param2
);
}
参考官网的说法:
可以参考下面几个博客的说法,感觉都挺好的:
@SpringQueryMap作用及用法-CSDN博客
@SpringQueryMap注解 feign的get传参方式_feign get请求参数注解-CSDN博客
Spring Cloud OpenFeign @SpringQueryMap注解-CSDN博客