Tell me how to properly configure the work of Feign and Spring Pageable Here are my Feign settings
feign:
okhttp:
enabled: true
autoconfiguration:
jackson:
enabled: true
client:
config:
default:
connectTimeout: ${FEIGN_DEFAULT_CONNECT_TIMEOUT:10000}
readTimeout: ${FEIGN_DEFAULT_READ_TIMEOUT:60000}
loggerLevel: full
errorDecoder: ru.core.config.TokenErrorDecoder
retryer: ru.service.SudisTokenService
My FeignClient
@FeignClient(name = "BaseCaseFeignClient", url = "${feign.services.host-backend.url}")
public interface BaseCaseFeignClient {
@GetMapping("/api/cases/base")
Page<BaseCaseEntityDto> getBaseCases(@SpringQueryMap BaseCaseEntityFilter filter, Pageable pageable);
@PostMapping("/api/cases/base/search")
Page<FoundRecordDto> searchCases(@RequestBody FilterSpecification filter, @SpringQueryMap Pageable pageable);
}
Original request
http://localhost:8081/cpt/api/cases/base/search?page=0&size=10&sort=caseOpenDttm,DESC
Instead of such a request
http://172.24.14.103:30750/cpt/api/cases/base/search?serialVersionUID=1232825578694716871&size=10&page=0&sort=caseOpenDttm,DESC
Feign sends
http://172.24.14.103:30750/cpt/api/cases/base/search?serialVersionUID=1232825578694716871&size=10&sort=caseOpenDttm%3A%20DESC&page=0
http://172.24.14.103:30750/cpt/api/cases/base/search?serialVersionUID=1232825578694716871&size=10&sort=caseOpenDttm: DESC&page=0
I found a similar solution https://github.com/spring-cloud/spring-cloud-openfeign/issues/146 The problem is that I already have one RequestBody
My feign client and has this annotation CollectionFormat (feign.CollectionFormat.CSV) But it does not help me = (
@FeignClient(name = "BaseCaseFeignClient", url = "${feign.services.host-backend.url}")
public interface BaseCaseFeignClient {
@PostMapping("/api/cases/base/search")
@CollectionFormat (feign.CollectionFormat.CSV)
Page<FoundRecordDto> searchCases(@RequestBody FilterSpecification filter, @SpringQueryMap Pageable pageable);
}
If I build a project without SpringQueryMap, then I get the following error
Page<FoundRecordDto> searchCases(@RequestBody FilterSpecification filter, Pageable pageable);
Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract org.springframework.data.domain.Page ru..BaseCaseFeignClient.searchCases(ru.ilter.shared.basecase.search.FilterSpecification,org.springframework.data.domain.Pageable)
Warnings:
Comment From: alabotski
Updated spring-cloud-version to version 3.0.2 helped
Comment From: OlgaMaciaszek
Thanks for the update - indeed, some work has been done around it in the recent release.