Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何将Spring Pageable传递给FaignClient_Spring Boot_Spring Mvc_Spring Cloud Feign_Springdoc - Fatal编程技术网

Spring boot 如何将Spring Pageable传递给FaignClient

Spring boot 如何将Spring Pageable传递给FaignClient,spring-boot,spring-mvc,spring-cloud-feign,springdoc,Spring Boot,Spring Mvc,Spring Cloud Feign,Springdoc,正如我在本期中所写: 在这个问题上: 我在包含@requestbody元素的POST请求中发送可分页对象时遇到一些问题 首先,我尝试发送嵌入在RequestBody中的Pageable,因为它是在使用springdoc openapi webmvc核心时作为示例生成的 例如: @PostMapping("/search") public Page<HelloDto> searchHellos(@RequestBody HelloDto example, Page

正如我在本期中所写: 在这个问题上:

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

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

例如:

@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, } }
@PostMapping(“/search”)公共页面searchHellos(@RequestBody HelloDto示例,Pageable Pageable)
{“示例”:{“消息”:“字符串”},“可分页”:{“页码”:0,“页面大小”:50,“偏移量”:10,“排序”:{“排序”:false,},“分页”:true,}
不,我学到了,我也可以通过查询参数发送它,它将被解析。在springdoc中,将分页内容提取到QueryParams中的注释称为org.springdoc.api.annotations.ParameterObject

@PostMapping("/search") public Page<HelloDto> searchHellos(@RequestBody HelloDto example, @ParameterObject Pageable pageable) { return helloCallerService.callHelloServiceClient(example, pageable); }
@PostMapping(“/search”)公共页面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);
@PostMapping(“/search”)公共页面searchHellos(@RequestHeader(“apiKey”)字符串apiKey,@RequestBody HelloDto示例,Pageable Pageable);
应用程序将不会启动,因为该方法“有太多的body参数”。 我试图用@RequestParam注释Pageable,但无法识别/解析它

我的问题是:

我们是否可以使用自定义的AnnotatedParameterProcessor,例如@ParameterObject,将ParameterObject展开并编码到url查询参数中


你会怎么做?或者注释参数处理器的方式是错误的?我可能需要扩展器或其他什么吗?

您的问题与springdoc openapi相比,更多地涉及到假装使用。
使用
org.springframework.cloud.openfeign.SpringQueryMap
,可以解决您的问题。

您是否成功地实现了这一点?我已经看到了您关于使用@SpringQueryMap的答案,但在我的例子中,我需要修改一些可分页的查询参数。sortField:DESC应该变成-sortFieldSorry,我只是觉得幸运的是它正确解析了我的页面(至少看起来是这样)。我不知道你是怎么控制这一切的。也许可以使用Expander、Param annotation和RequestLine(如本例所示)来寻找解决方案:我还更喜欢带有确认选项的更通用的解决方案。请告诉我您是否可以解决您的问题。嗯,我们也在研究自定义AnnotatedParameterProcessor,但还没有成功。我还使用了被动的伪实现,并在那里添加了一个标签:我最终创建了自己的对象,该对象扩展自HashMap。它可以用作普通的@RequestParam。我添加了一个构造器,它接受一个分页并将正确的信息放入地图谢谢,我的答案被删除了,但这正是我使用的。