我使用以下代码在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",
.....
.....
}
...
....
]
}
有没有办法只能获取“计数”字段?然后我可以使用它来循环并从“数据”获取所有记录。
谢谢!
我想我通过使用JsonPath得到“计数”来找到解决方法。
final String data = restTemplate.exchange(baseURI + api + "?limit=0", HttpMethod.GET, entity, String.class).getBody();
final int count = JsonPath.read(data, "$.count");
感谢大家!