Как да извлечете всички екземпляри на 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

Това е стар въпрос, но за всеки, който търси лесно решение. Трябва да замените компонента 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