Как получить все страницы при использовании REST API в Spring Boot - PullRequest
0 голосов
/ 17 сентября 2018

Я использую следующий код для использования вызова GET в Spring Boot и сохраняю результат в виде JSON.Однако я могу получить только 100 записей, что является размером страницы по умолчанию для API.Как получить все данные (все страницы)?

            public static void getData(String baseDir, String baseURI, String headerFieldName, String headerFieldValue) {


                        RestTemplate restTemplate = new RestTemplate();
                        HttpHeaders headers = new HttpHeaders();
                        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
                        headers.add(headerFieldName, headerFieldValue);
                        HttpEntity<String> entity = new HttpEntity<String>(headers);
                        String data = restTemplate.exchange(baseURI +  HttpMethod.GET, entity, String.class).getBody();
                        dataWriter(data, baseDir + File.separator + File.separator + ".json");
            }

            private static void dataWriter(final String data, final String filePath)
                {

                    try {
                        Files.write(Paths.get(filePath), data.getBytes());
                    }
                    catch (final IOException e) {
                        e.printStackTrace();
                    }

                }

Где:

baseURI = www.xxxxxx.com/records

headerFieldName имеет значение «Авторизация», а headerFieldValue содержит маркер доступа.

Набор данных содержит около 18000 записей.

После вызова API я получаю следующий ответ, где count - это количество записей в ответе.

            {
                "count": 18000,
                "data": [{
                    "id": "96d8-3024739ed555",
                    .....
                    .....
                },
                {
                    "id": "8595-0a27472aef0e",
                    .....
                    .....
                }
                ...
                ....
                ]
            }

Есть ли способ, где я могу получить только поле "count"?Который я могу затем использовать для зацикливания и получения всех записей из «данных».

Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2018

Я думаю, что нашел обходной путь, используя JsonPath для получения "count".

             final String data = restTemplate.exchange(baseURI + api + "?limit=0", HttpMethod.GET, entity, String.class).getBody();
             final int count = JsonPath.read(data, "$.count");

Спасибо всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...