如何将 Spring Pageable 传递给 FeignClient
how to pass Spring Pageable to FeignClient
正如我在本期中所写:https://github.com/spring-cloud/spring-cloud-openfeign/issues/375
在这个问题中:
我在 POST 包含 @requestbody 元素的请求中发送 Pageable 对象时遇到一些问题。
首先,我尝试发送嵌入在我的 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, } }
不,我了解到,我也可以通过查询参数发送它,它会被解析。将pageable提取到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);
应用程序将无法启动,因为该方法“主体参数过多”。
我尝试用 @RequestParam 注释 Pageable 但它不会被识别/解析。
我的问题是:
我们可以使用自定义的 AnnotatedParameterProcessor 吗? @ParameterObject 将 ParameterObject 扁平化并将其编码为 url 查询参数?
你会怎么做?还是 AnnotatedParameterProcessor 方法不对?我可能需要扩展器或其他东西吗?
你的问题与 feign 用法的关系比 springdoc-openapi 更相关。
使用 using org.springframework.cloud.openfeign.SpringQueryMap
,解决您的问题。
正如我在本期中所写:https://github.com/spring-cloud/spring-cloud-openfeign/issues/375
在这个问题中:
我在 POST 包含 @requestbody 元素的请求中发送 Pageable 对象时遇到一些问题。
首先,我尝试发送嵌入在我的 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, } }
不,我了解到,我也可以通过查询参数发送它,它会被解析。将pageable提取到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);
应用程序将无法启动,因为该方法“主体参数过多”。 我尝试用 @RequestParam 注释 Pageable 但它不会被识别/解析。
我的问题是:
我们可以使用自定义的 AnnotatedParameterProcessor 吗? @ParameterObject 将 ParameterObject 扁平化并将其编码为 url 查询参数?
你会怎么做?还是 AnnotatedParameterProcessor 方法不对?我可能需要扩展器或其他东西吗?
你的问题与 feign 用法的关系比 springdoc-openapi 更相关。
使用 using org.springframework.cloud.openfeign.SpringQueryMap
,解决您的问题。