带 List 参数的 Spring Cloud Feign Client @RequestParam 会创建错误的请求

2024-02-21

我有一个 Spring Cloud Feign Client 映射定义如下

@RequestMapping(method = RequestMethod.GET, value = "/search/findByIdIn")
Resources<MyClass> get(@RequestParam("ids") List<Long> ids);

当我打电话时

feignClient.get(Arrays.asList(1L,2L,3L))

根据我在调试器中看到的内容,feign-core 库形成以下请求:

/search/findByIdIn?ids=1&ids=2&ids=3

而不是预期的

/search/findByIdIn?ids=1,2,3

这对于以与我的 Feign 客户端方法相同的方式声明的服务器 Spring Data REST 端点来说是正确的。

因此,由于这个问题,请求总是返回空集。

我见过类似的question https://stackoverflow.com/questions/32098906/spring-cloud-feign-client-duplicate-list-values,但看起来 Feign 客户端在 2015 年就按照我的预期工作了。

我在用:

  • spring-cloud-starter-feign 版本 1.2.4.RELEASE
  • feign-httpclient 版本 9.4.0
  • feign-core 版本 9.4.0

有没有办法纠正这种行为并将 Spring Cloud Feign 客户端与 Spring Data REST 定义的端点“结合”?


我遇到了同样的问题,参数多次出现,而不是预期的逗号分隔的项目序列。解决方案非常简单:

在我的假客户端中我使用了数组

feignClient.get(new Long[]{1L,2L,3L})

而不是集合/列表:

feignClient.get(Arrays.asList(1L,2L,3L))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带 List 参数的 Spring Cloud Feign Client @RequestParam 会创建错误的请求 的相关文章

随机推荐