对于我的工作,我必须公开一个能够从多个数据源收集数据的 API。这就是我必须使用 teiid 实现一些数据虚拟化的原因:由于我一个人在这个项目上,设计所有类以匹配每个 json 对象将是浪费时间。
看来我的一些数据源是分页的 REST Api。我知道 teiid 可以轻松处理 REST Api,但是那些分页的呢?
响应类似于:
{
"total": 132,
"subtotal": 132,
"page": 2,
"per_page": 100,
"search": null,
"sort": {
"by": null,
"order": null
},
"results": [ ... ]
}
我已经有一个 java 类,它可以通过使用如下所示的 do..while 循环来解析整个 API:
page = 1;
List<String> result = new ArrayList<String>();
do {
RestTemplate template = new RestTemplate();
HttpHeaders headers = createHttpHeaders();
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
ResponseEntity<String> request = template.exchange(url+endpoint+"?page=" + page, HttpMethod.GET, entity, String.class);
ObjectMapper mapper = new ObjectMapper();
SatelliteResponseJSON response;
try {
response = mapper.readValue(request.getBody().getBytes(), SatelliteResponseJSON.class);
total = response.getTotal();
parsed += response.getPer_page();
page += 1;
result.addAll(response.getResults());
} catch (IOException e) {
e.printStackTrace();
}while (parsed < total);
有没有办法为我的 VDB 做同样的事情,所以我不必为我要工作的每种对象编写一个 java 类?如果没有,我怎么能避免编写这样的课程?
谢谢