Feign 客户端中不支持 Spring Data Pageable 作为 RequestParam

2024-01-18

我一直在尝试为我的其余 api 公开一个 Feign Client。它采用 Pageable 作为输入并定义了 PageDefaults。

控制器:

@GetMapping(value = "data", produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "Get Data", nickname = "getData")
public Page<Data> getData(@PageableDefault(size = 10, page = 0) Pageable page,
            @RequestParam(value = "search", required = false) String search) {
    return service.getData(search, page);
}

这是我的假装客户:

@RequestMapping(method = RequestMethod.GET, value = "data")
public Page<Data> getData(@RequestParam(name = "pageable", required = false) Pageable page,
            @RequestParam(name = "search", defaultValue = "null", required = false) String search);

现在的问题是,无论我发送给 Feign Client 的页面大小和页码如何,它总是应用 PageDefaults (0,10)。

当我直接调用其余服务时,它可以工作:

我正在使用 Spring Boot 2.1.4.RELEASE 和 Spring Cloud Greenwich.SR1。最近进行了修复以支持可分页(https://github.com/spring-cloud/spring-cloud-openfeign/issues/26#issuecomment-483689346 https://github.com/spring-cloud/spring-cloud-openfeign/issues/26#issuecomment-483689346)。但是我不确定上面的场景是否未被涵盖或者我遗漏了一些东西。


我认为你的代码不起作用,因为你正在使用@RequestParam注释为PageableFeign 方法中的参数。

我对这种方法的实现按预期工作。

Client:

@FeignClient(name = "model-service", url = "http://localhost:8080/")
public interface ModelClient {
    @GetMapping("/models")
    Page<Model> getAll(@RequestParam(value = "text", required = false) String text, Pageable page);
}

控制器:

@GetMapping("/models")
Page<Model> getAll(@RequestParam(value = "text", required = false, defaultValue = "text") String text, Pageable pageable) {
    return modelRepo.getAllByTextStartingWith(text, pageable);
}

请注意,就我而言,无需暴露PageJacksonModule作为一个 bean,Spring 引发了异常:

InvalidDefinitionException:无法构造实例org.springframework.data.domain.Page

所以我必须将其添加到项目中:

@Bean
public Module pageJacksonModule() {
    return new PageJacksonModule();
}

我的工作演示:github.com/Cepr0/sb-feign-client-with-pageable-demo https://github.com/Cepr0/sb-feign-client-with-pageable-demo

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

Feign 客户端中不支持 Spring Data Pageable 作为 RequestParam 的相关文章

随机推荐

  • Ruby Openid 连接库与客户端消费示例

    我正在寻找 ruby openid connect 客户端库以及使用它的直接代码示例 我找到了一个图书馆here https github com nov openid connect它的示例基于 Rails 但我对 Rails 不太熟悉
  • 为什么linux在内核代码持有自旋锁后禁用内核抢占?

    我是 Linux 新手 正在阅读 Rubini Corbet 撰写的 Linux 设备驱动程序书籍 我对与以下相关的一项声明感到困惑spinlocks 书中指出 如果非抢占式单处理器系统曾经进入 旋转一把锁 它会永远旋转 没有其他线程能够获
  • Java字符串搜索忽略重音符号

    我正在尝试为我的应用程序编写一个过滤函数 该函数将采用输入字符串并过滤掉以某种方式与给定输入不匹配的所有对象 最简单的方法是使用 String 的 contains 方法 即仅检查对象 对象中的 String 变量 是否包含过滤器中指定的字
  • 在 WHERE 子句中使用 mysql concat() ?

    我想搜索我的表 其中包含一列名字和一列姓氏 我目前接受一个字段中的搜索词 并将其与两列进行比较 一次一个 select from table where first name like search term or last name li
  • 有没有检查 CLS 合规性的工具?

    有没有一个工具可以分析我的 NET 代码 C 和VB NET http en wikipedia org wiki Visual Basic NET 然后告诉我why东西不符合 CLS Visual Studio 很高兴地告诉我一个参数不符
  • 如何只为 pandas 中数据帧的某些列绘制直方图

    这是我拥有的数据 在此输入图像描述 https i stack imgur com EwuSA png 假设我有一个名为 df 的变量中的数据框 如果我执行 df hist 它将为数据框中的每个类别显示一个直方图 但我只想为从类别 1 到类
  • 从 docker-compose 中退出代码打破 while 循环

    我有一个案例 有一个 WordPress 项目 我应该在其中创建一个脚本来更新插件并将源代码更改提交到单独的分支 在这样做时我遇到了一个奇怪的问题 输入变量 akimset 4 0 3 all in one wp migration 6 7
  • 在一条消息 MQTT 中发布多个主题

    我有一个设备可以从不同的传感器收集大量数据 我想通过一条消息将它们发送给我的经纪人 在客户端 我只想在给定时间查看其中一些数据 我不想看到全部数据 我可以在一条消息中发布多个主题 然后在客户端只能看到其中的一些主题吗 我知道我可以使用通配符
  • 如何在打印事件上触发javascript?

    当用户打印页面时是否可以触发javascript事件 当用户选择打印页面时 我想删除对 j avascript 库的依赖 因为该库非常适合屏幕但不适合打印 知道如何实现这一目标吗 对于任何从谷歌偶然发现这个答案的人 让我尝试澄清一下 正如
  • Couchbase/N1QL:从参数提供的值列表中选择

    作为后续从集合中按 类别 获取顶部行 https stackoverflow com questions 72447539 get top rows by category from a collection我仍然想获取每个类别 ID 的前
  • Azure WebJobs - 在哪里托管?它们作为长时间运行的进程安全吗?

    From Azure 网站始终在线 https stackoverflow com questions 26578934 azure website always on and Azure 网站上 始终开启 设置的含义 https stac
  • Android viewModel 保存的StateHandle

    这更多的是一个概念性问题 Android 最近引入了在 viewModel 内部处理进程死亡期间状态的概念 而不是savedInstanceState以前位于 Activity 或 Fragment 中 我的问题是如何测试这个进程的死亡 如
  • 如何在 Robot Framework 中标记数据驱动模板测试

    我有很多数据驱动的测试 这样我就可以对多行 数据运行相同的测试 效果很好 但是 我们还使用 TestRail 并通过 RF 测试上的标签将 RF 测试链接到 TestRail 目前我只为每个模板标记一个 TestRailID 例如 Test
  • 如何在Linux用户空间中实现高精度定时器?

    我的 BeagleBoard 上安装了 Angstrom Linux 我想实现非常精确的计时器 每 500us 触发一次 我读到hrtimers 但我发现的所有实现都是针对内核空间的 我想在用户空间中实现它 有没有可以调用这些的APIhrt
  • React-hook-form 和 Material UI FormControl

    所以我试图为我的表单注册一些单选按钮 但它不会注册
  • ImageMagick 和 Java Runtime Exec 的问题

    我有一个奇怪的问题 我认识的 java 专家都无法解决 我需要在我的应用程序上使用 imagemagick 将我网站上的电子邮件转换为图像 这样就没有锅可以轻松地获取电子邮件 使用 image magick 命令行解决了问题 如下所示转换
  • 为什么 std::initializer_list 会复制项目?

    我一直以为std initializer list是一个轻量级代理对象 它只会从列表项中获取 const 引用 而不是复制它们 但后来我发现在这种情况下实际上执行了复制 struct Test Test std cout lt lt thi
  • 使用 Vue Js 和 Vue Cli 构建 Chrome 扩展

    我目前正在构建一个 Chrome 扩展程序vuejs https vuejs org 供电前端 使用这个效果非常好vuecli https cli vuejs org 直到应用程序开始使用Webextension API 普通网站无法访问此
  • PyQt5 无法导入 QtGui

    我刚刚从 PyQt4 迁移到 5 并且 QtGui 遇到问题 我使用 32 位 Windows 安装程序安装 而不是我自己的版本 当我做 from PyQt5 import QtGui I get class MainWindow QtGu
  • Feign 客户端中不支持 Spring Data Pageable 作为 RequestParam

    我一直在尝试为我的其余 api 公开一个 Feign Client 它采用 Pageable 作为输入并定义了 PageDefaults 控制器 GetMapping value data produces MediaType APPLIC