当前位置: 首页 > 知识库问答 >
问题:

在外部客户端中,Spring Data Pageable不支持作为RequestParam

洪增
2023-03-14

我一直试图为我的Restapi暴露一个FaignClient。它将Pagable作为输入,并定义了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);

现在的问题是,无论我发送给假客户端的页面大小和页码如何,它都会应用页面默认值(0,10)。

当我直接呼叫rest服务时,它会工作:http://localhost:8080/data?size=30

我使用的是Spring Boot 2.1.4。释放和Spring的云格林威治。SR1。最近做了一个修复来支持分页(https://github.com/spring-cloud/spring-cloud-openfeign/issues/26#issuecomment-483689346). 然而,我不确定上面的场景是否没有涵盖,或者我遗漏了什么。

共有1个答案

邵刚洁
2023-03-14

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

我对这种方法的实现如预期的那样有效。

客户:

@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。数据领域第页

所以我不得不把它添加到项目中:

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

我的工作演示:github。com/Cepr0/sb外挂客户端,可分页演示

 类似资料:
  • Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

  • 第一个twisted支持的诗歌服务器 尽管Twisted大多数情况下用来写服务器代码,但为了一开始尽量从简单处着手,我们首先从简单的客户端讲起。 让我们来试试使用Twisted的客户端。源码在twisted-client-1/get-poetry.py。首先像前面一样要开启三个服务器: python blocking-server/slowpoetry.py --port 10000 poetry

  • 问题内容: 我正在使用需要支持以下方案的GWT应用程序: 服务器位于时区A 客户端的浏览器设置为时区B GWT应用程序配置为在时区C中显示日期/时间 由于GWT不支持Calendar,并且不存在对javascript时区的本地支持,因此我无法想到一个解决此问题的好方法。 你们有没有做过类似的事情,或者您知道我可以使用的任何好工具吗? 谢谢! 问题答案: 以我的经验,在处理gwt中的日期和时区时,以

  • 我想知道如何将缓存配置添加到Vertx http web客户端。 使用Apache http客户端,我可以轻松地设置setCacheConfig 有什么想法吗?

  • 我们需要在couchbase客户端和couchbase集群之间实现ssl通信。我正在使用spring数据couchbase客户端api与couchbase集群进行交互,这个api的问题是我没有找到任何属性在couchbase客户端上启用ssl,你能帮我在couchbase客户端上配置ssl吗。

  • 我正在尝试为超媒体API实现一个spring android客户端,并以HAL格式响应。Spring HATEOAS参考文档描述了客户端服务遍历的实现,其灵感来自Traverson JavaScript库。我这样做: 但我在创建新的Traverson对象时遇到以下错误: 有人知道怎么修吗? 是否有其他/更好的方式支持android中的HAL响应?