Мне нужно вызвать конечную точку с возможностью просмотра страниц в моем приложении Spring Boot из другого приложения Spring Boot. Я пытаюсь передать доступность опций из первого приложения во второе, но у меня возникает проблема, когда имя свойства отображается как firstName: ASC
. Когда к этому добавляется направление, оно становится firstName: ASC: ASC
, что заставляет запрос JPA выдавать исключение.
Как правильно передать параметры вывода страниц из моей первой конечной точки во вторую?
Вызов приложения
@GetMapping("/v1/users")
public Flux<User> getUsersByAccount(@RequestParam Long accountId,
@PageableDefault(size = 10, sort = "firstName") Pageable pageable) {
return userService.getUsersByAccount(accountId, pageable);
}
public Flux<User> getUsersByAccount(Long accountId, Pageable pageable) {
int page = pageable.getPageNumber();
int size = pageable.getPageSize();
Sort sort = pageable.getSort();
return webClient.backendService()
.get().uri(builder -> builder
.path("/rest/users")
.queryParam("accountId", accountId)
.queryParam("page", page)
.queryParam("size", size)
.queryParam("sort", sort)
.build())
.retrieve()
.bodyToFlux(ContactInfo.class);
}
Я разделяю Pageable на его компоненты, потому что я не был уверен, как передать весь объект сразу, так как он не назван параметр во втором приложении. Обратите внимание, что в этот момент сортировка выглядит нормально и выглядит так, как должно быть, с firstName
и ASC
в качестве отдельных значений для имени свойства и направления соответственно.
Вызывается приложение
@GetMapping("/rest/users")
public List<User> getUsersByAccount(@RequestParam Long accountId, Pageable pageable) {
return userService.getUsersByAccount(accountId, pageable);
}