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

如何将Spring Pageable传递给FaignClient

林建本
2023-03-14

正如我在本期中所写:https://github.com/spring-cloud/spring-cloud-openfeign/issues/375在这个问题上:Spring data Pageable不适用于外部客户端

我在包含@requestbody元素的POST请求中发送可分页对象时遇到一些问题。

首先,我尝试发送嵌入在RequestBody中的Pageable,因为它是在使用springdoc openapi webmvc core时作为示例生成的。

示例:

@PostMapping("/search") public Page<HelloDto> searchHellos(@RequestBody HelloDto example, Pageable pageable)

{ "example": { "message": "string" }, "pageable": { "pageNumber": 0, "pageSize": 50, "offset": 10, "sort": { "sorted": false, }, "paged": true, } }

不,我了解到,我也可以通过查询参数发送它,它将被解析。将分页提取到QueryParams中的注释在SpringDoc中称为org.springdoc.api.annotations.ParameterObject。

@PostMapping("/search") public Page<HelloDto> searchHellos(@RequestBody HelloDto example, @ParameterObject Pageable pageable) { return helloCallerService.callHelloServiceClient(example, pageable); }

当我试图通过类似于此客户端接口的外挂调用类似的控制器接口时:

@PostMapping("/search") public Page<HelloDto> searchHellos(@RequestHeader("apiKey") String apiKey, @RequestBody HelloDto example, Pageable pageable);

应用程序无法启动,因为该方法“有太多的body参数”。我试图用@RequestParam对Pageable进行注释,但无法识别/解析。

我的问题是:

我们可以使用自定义的注释参数处理器,例如。@ParameterObject,将ParameterObject平面化并将其编码到url查询参数中?

你会怎么做?还是注释参数处理器的方式不对?我需要扩张器吗?

共有1个答案

谢华彩
2023-03-14

你的问题更多地是关于假用法,而不是springdoc openapi。使用org。springframework。云OpenFaign。SpringQueryMap解决了您的问题。

 类似资料:
  • 问题内容: 我知道不推荐这样做,但是是否可以将用户密码传递给scp? 作为批处理作业的一部分,我想通过scp复制文件,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。 问题答案: 您就可以使用一个工具脚本它预期(有得心应手绑定太像Pexpect的为Python)。

  • 问题内容: 我试图将URI对象传递给我的Intent,以便在另一个活动中使用该URI。 如何传递URI? 现在如何在其他活动中使用此URI? 感谢你们 问题答案: 您可以将uri存储为字符串 然后像这样将字符串转换回uri

  • 问题内容: 在我的ASP.NET MVC应用程序中,我希望用户将值添加到文本框中,然后按Ajax.ActionLink。我想做这样的事情: Ajax.ActionLink(“ Go”,“ Action”,“ Controller”,新的{value = textbox1.value}) 还是我还能如何使此文本框值返回到我的操作?jQuery的? 问题答案: 您可以使用AJAX $ .get方法运行

  • 问题内容: 我需要更新我的时间。该值由正在执行的函数返回。 返回一个整数。 这将返回未防御状态。因此,我需要获取计数并将其传递给 问题答案: 如果您需要在每次调用之后更改重复间隔,则不能使用-使用恒定重复。您需要使用,因此您可以每次更改时间段:

  • 问题内容: 我试图找到定义可以以一般方式使用的组件的正确方法: 当然,可以想象并在父组件和子组件之间进行渲染的逻辑。 对于这个问题,这是一个虚拟的实现: 问题是,每当您用于定义包装器组件时,如何将某些属性传递给其所有子组件? 问题答案: 用新道具克隆Children 您可以使用React.Children遍历子级,然后使用React.cloneElement使用新的道具(浅合并)克隆每个元素,例如

  • 问题内容: 我正在A中使用RUN指令安装rpm 但是,我想将值“ 2.3”作为参数传递。我的RUN指令应类似于: 哪里 问题答案: 您正在寻找和指导。这些是Docker 1.9中的新功能。查看https://docs.docker.com/engine/reference/builder/#arg。这将允许您添加到,然后使用构建。