Вызвать постраничный REST-запрос при весенней загрузке - PullRequest
0 голосов
/ 24 января 2020

Я создаю приложение с пружинной загрузкой, для которого требуется выполнить вызов REST, в котором реализована нумерация страниц, например:

http://host/api/getlist?p=1&ps=100

, где p - номер страницы & ps - это размер страницы.

Результат этого API, кроме списка вывода, также отображает информацию о подкачке, например:

"paging": {
        "pageIndex": 1,
        "pageSize": 100,
        "total": 372
    }

В настоящее время в моем первом обращении я получаю список вывода и также читая эту информацию о поисковом вызове, а затем вычисляя, сколько еще хитов требуется. В приведенном выше случае 372 / 100 = 3, затем 3 - 1, потому что один удар уже сделан.

Но это очень наивный подход. Есть ли у Spring / java что-то, что я могу использовать?

Пожалуйста, предложите.

Спасибо

1 Ответ

0 голосов
/ 24 января 2020

@ reiley Реализация пейджинга с использованием интерфейса Pageable.

Он также дает другие подробности, поэтому становится полезным выполнение других действий.

Размер страницы переднего конца начинается с 1, а бэкэнд начинается с 0.

Контроллер:

@GetMapping("/")
  private ResponseEntity<Page<User>> getUsers(@RequestParam(value = "page_no", defaultValue = "1") Integer pageNo,
                                              @RequestParam(value = "limit", defaultValue = "10") Integer limit,
                                              @RequestParam(value = "order_by", defaultValue = "userId") String sortBy,
                                              @RequestParam(value = "order_type", defaultValue = "asc") String orderBy) {
    Page<UserDTO> users = userService.getUsers(pageNo, limit, sortBy, orderBy);
    return customResponse(true, Constants.DATA_FETCH, ENTITY_NAME.concat("s"), users);
  }

ServiceImpl

@Override
  public Page<UserDTO> getUsers(Integer pageNo, Integer limit, String sortBy, String orderBy) {

    Sort sortingInOrder = Util.sortingOrder(orderBy, sortBy);
    Pageable pageable = PageRequest.of(pageNo - 1, limit, sortingInOrder);
    Page<UserDTO> result = userRepository.findAll(pageable).map(user -> userMapper.toDTO(user));
    if (result.getContent().size() > 0) {
      return result;
    }
    return Page.empty();
  }

Util

public static Sort sortingOrder(String orderBy, String sortBy) {
    Sort sortingInOrder;
    switch (orderBy) {
      case "asc":
        sortingInOrder = Sort.by(sortBy).ascending();
        break;
      case  "desc" :
        sortingInOrder = Sort.by(sortBy).descending();
        break;
      default:
        throw new CustomException("Invalid Input in order by!!!");
    }
    return sortingInOrder;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...