如何在Spring Boot中使用REST API时检索所有页面

问题描述 投票:-2回答:1

我使用以下代码在Spring Boot中使用GET调用,并将结果存储为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();
                    }

                }

哪里:

基本URI = www.xxxxxx.com/records

headerFieldName设置为“Authorization”,headerFieldValue包含访问令牌。

该数据集包含大约18000条记录。

调用API后,我得到以下响应,其中count是响应中的记录数。

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

有没有办法只能获取“计数”字段?然后我可以使用它来循环并从“数据”获取所有记录。

谢谢!

java spring rest http spring-boot
1个回答
0
投票

我想我通过使用JsonPath得到“计数”来找到解决方法。

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

感谢大家!

© www.soinside.com 2019 - 2024. All rights reserved.