首页 > 解决方案 > Spring Cloud OpenFeign 创建动态查询参数失败

问题描述

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不生成查询参数。

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

但是我想使用一个自定义对象,其中 feign 客户端可以从对象的属性中生成动态查询参数。

标签: springspring-mvcspring-bootspring-cloudspring-cloud-feign

解决方案


来自Spring Cloud OpenFeign 文档

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

所以你的代码应该是:

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

推荐阅读