我有一个 Spring Clound 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 ,但看起来 Feign 客户端在 2015 年按我的预期工作。

我在用:
  • spring-cloud-starter-feign 版本 1.2.4.RELEASE
  • feign-httpclient 版本 9.4.0
  • 伪装核心版本 9.4.0

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

    最佳答案

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

    在我的假客户端中,我使用了数组
    feignClient.get(new Long[]{1L,2L,3L})
    而不是集合/列表:
    feignClient.get(Arrays.asList(1L,2L,3L))

    关于spring-cloud - Spring Cloud Feign Client @RequestParam with List 参数创建错误请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41744542/

    10-12 06:24