Как получить все экземпляры JHipster API для сущностей

При вызове сгенерированного API при использовании пагинатора, могу ли я каким-либо образом вызвать сгенерированный REST-API для извлечения ВСЕХ экземпляров объекта, а не только первых 20,30,40 и т. д.?

Я обнаружил, что, поскольку я использую разбивку на страницы для создания и управления своими объектами, когда я хочу использовать эти объекты в других представлениях (самостоятельно созданных), тогда API не предоставляет все экземпляры при вызове entity.query() в angular/js.

Является ли это ограничением для JHipster, или я могу вызвать REST-API каким-либо другим способом, предоставляя информацию для отказа от разбиения на страницы?


person Jørgen Skår Fischer    schedule 14.05.2015    source источник


Ответы (2)


Вы можете изменить существующий контроллер остатка для этого объекта. Вот пример с сущностью Center.

Я возвращаю все центры, если нет значения для смещения и предела.

@RequestMapping(value = "/centers",
        method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<List<Center>> getAll(@RequestParam(value = "page" , required = false) Integer offset,
                              @RequestParam(value = "per_page", required = false) Integer limit)
    throws URISyntaxException {
    if(offset == null && limit == null) {
        return new ResponseEntity<List<Center>>(centerRepository.findAll(), HttpStatus.OK);
    } else {
        Page<Center> page = centerRepository.findAll(PaginationUtil.generatePageRequest(offset, limit));
        HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/centers", offset, limit);
        return new ResponseEntity<List<Center>>(page.getContent(), headers, HttpStatus.OK);
    }
}

Затем в angular вам просто нужно вызвать Center.query(); без параметров.

person Fidan Hakaj    schedule 14.05.2015
comment
Это работает, но я чувствую, что JHipster должен иметь это по умолчанию. Если я использую диспетчер сущностей для воссоздания своих сущностей, я потеряю эти изменения:/ - person Jørgen Skår Fischer; 15.05.2015
comment
Используйте VCS для отслеживания изменений и, в конечном итоге, их отмены, если вы хотите сохранить то, что вы сделали. - person Fidan Hakaj; 15.05.2015
comment
Я не думаю, что Jhipster должен иметь это по умолчанию. Выбирая разбиение на страницы по запросу генератора, вы не ожидаете, что пользователи смогут получить все экземпляры за один раз. Представьте, что у вас есть миллионы экземпляров. - person Fidan Hakaj; 21.05.2015
comment
возможно ли это сделать со стороны клиента? я имею в виду с angularjs? У меня такая же проблема, но я пытаюсь понять это со стороны клиента. - person TheTechGuy; 15.08.2017

Это старый вопрос, но для тех, кто ищет простое решение. Вам необходимо переопределить bean-компонент PageableHandlerMethodArgumnetResolver по умолчанию:

@Configuration
public class CustomWebConfigurer implements WebMvcConfigurer {
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
        resolver.setFallbackPageable(Pageable.unpaged());
        argumentResolvers.add(resolver);
    }
}
person Ado Karasev    schedule 11.03.2019