Без пагинации:
[
{ "id": 1, "name": "John" },
{ "id": 2, "name": "Lia" }
...
]
С пагинацией:
{
"content": [
{ "id": 1, "name": "John" },
{ "id": 2, "name": "Lia" }
...
],
"page": {
"size": 20,
"number": 0,
"totalElements": 50213,
"totalPages": 2511
}
}Вместо того чтобы напрямую возвращать Page<T>, можно вернуть кастомный paged response DTO, чтобы не светить типы фреймворка в API.
record PagedResponse<T>(
List<T> items,
int page,
int size,
long totalElements,
int totalPages
) {}
И метод контроллера будет выглядеть примерно так:
@GetMapping
public PagedResponse<User> getUsers(Pageable pageable) {
Page<User> page = repository.findAll(pageable);
return new PagedResponse<>(
page.getContent(),
page.getNumber(),
page.getSize(),
page.getTotalElements(),
page.getTotalPages()
);
}
👉 Java Portal
