Столкнулся с проблемой добавления пагинации в реактивный REST API. Хотя есть способ добавить поле Pageable/PageRequest
к моему объекту запроса, но он не работает так, как вы можете определить размер страницы в качестве параметров запроса.
Только один рабочий подход - определить page и size в качестве отдельных полей объекта запроса запроса явным образом, а затем преобразовать его в Pageable
объект, используя PageRequest.of()
.
Вопрос: у нас есть неявный способ добавления разбиения на страницы к реактивным конечным точкам REST API как это работает в Spring MVC с использованием Pageable
объекта в качестве параметра запроса?
Контроллер:
...
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@RestController
@RequestMapping("/foos")
@RequiredArgsConstructor
public class FooController {
private final FooService fooService;
@GetMapping
@Validated
public Mono<Page<Foo>> readCollection(FooCollectionQuery query) { // Also tried to define Pageable as separate parameter here, still not working
return fooService.readCollection(query);
}
}
Объект запроса запроса:
...
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@Value
@EqualsAndHashCode(callSuper = false)
public class FooCollectionQuery {
@NotNull
UUID id;
...
// Pageable page; - not working
// Page page; - not working
// PageRequest page; - not working
}
Способ, которым я пытался для вызова конечной точки с нумерацией страниц:
http://.../foos?page=1&size=2