gpt4 book ai didi

java - 如何将分页 REST API 解析为 teiid 数据源?

转载 作者:行者123 更新时间:2023-11-30 06:26:09 25 4
gpt4 key购买 nike

对于我的工作,我必须公开一个能够从多个数据源收集数据的 API。这就是为什么我必须使用 teiid 实现一些数据虚拟化:因为我独自一人参与这个项目,设计所有类来匹配每个 json 对象将是浪费时间。

我的一些数据源似乎是分页的 REST Api。我知道 teiid 可以轻松处理 REST Api,但是那些分页的 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 类?如果没有,我怎样才能避免编写这样的类?

谢谢

最佳答案

不幸的是,目前没有内置支持,因为 REST API 上的分页将根据给定源进行自定义,并且很难从给定的原始页面中找出下一页的“nextURL”。

但是,您应该能够在 Teiid 代码中扩展“ws”转换器并轻松提供该功能,特别是如果您的所有源都遵循相同的分页结构。如果您能从总体上考虑此功能并有想法,我不介意接受作为贡献或合作开发此功能。

顺便说一句,我们支持的 OData 转换器确实具有分页功能,如果您的源是 OData,则可以无缝工作。您可以将其作为示例,但并不是真正必需的。

关于java - 如何将分页 REST API 解析为 teiid 数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47174653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com