Spring Cloud OpenFeign无法创建动态查询参数

时间:2018-11-29 20:12:57

标签: spring spring-mvc spring-boot spring-cloud spring-cloud-feign

Spring cloud openFeign无法创建动态查询参数。它抛出以下异常,因为SpringMvcContract尝试查找不存在的RequestParam值属性。

java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0


@RequestMapping(method = RequestMethod.GET, value = "/orders")
Pageable<Order> searchOrder2(@RequestParam CustomObject customObject);

我尝试使用@QueryMap代替@RequestParam,但是@QueryMap不会生成查询参数。

Btw @RequestParam Map<String, Object> params方法参数可以很好地生成动态查询参数。

但是我想使用自定义对象,伪装客户端可以根据对象的属性生成动态查询参数。

谢谢

2 个答案:

答案 0 :(得分:4)

来自Spring Cloud OpenFeign Docs

  

Spring Cloud OpenFeign提供了等效的@SpringQueryMap批注,该批注用于将POJO或Map参数注释为查询参数映射

因此您的代码应为:

@RequestMapping(method = RequestMethod.GET, value = "/orders")
Pageable<Order> searchOrder2(@SpringQueryMap @ModelAttribute CustomObject customObject);

答案 1 :(得分:3)

app/jni有一个open issue,用于支持pojo对象作为请求参数。因此,我使用了请求拦截器,该请求拦截器从feign方法获取对象,并从其字段创建url的查询部分。感谢@charlesvhe

spring-cloud-starter-feign

}