我们正在使用 Java 开发一个 Cloud Foundry 应用程序,它应该能够使用任何类型的 OData 实体。我们从 Destination 服务获得一个基本路径,添加一些用户输入的路径,并希望存储我们从那里获得的结果。
Cloud SDK 是否提供有助于 OData 查询部分的组件?还是我们需要求助于像 Olingo 这样的通用工具?
我们正在使用 Java 开发一个 Cloud Foundry 应用程序,它应该能够使用任何类型的 OData 实体。我们从 Destination 服务获得一个基本路径,添加一些用户输入的路径,并希望存储我们从那里获得的结果。
Cloud SDK 是否提供有助于 OData 查询部分的组件?还是我们需要求助于像 Olingo 这样的通用工具?
您可以使用ODataQueryBuilder
执行任意 OData 调用,然后手动处理结果。
ODataQueryResult result = ODataQueryBuilder
.withEntity("/base/path/to/api" + userPath, userEntity)
.build()
.execute("MyDestination");
然后如何处理结果在很大程度上取决于您的用例。如果返回的数据是您可以在运行时确定的已知类型,您可以简单地将结果检索为该类型。在这个例子中,我们收到一个项目列表:
List<MyClass> resList = result.asList(MyClass.class);
如果没有,您可以处理ResultElement
请求的 s,例如处理 json 对象:
result.getResultElements().forEach(e -> {
if( e.isResultObject() ) {
JsonObject obj = ((GsonResultObject)e).getJsonObject();
// do some json processing
}
else if( e.isResultCollection() ) {
// do something else
}
else {
System.out.println(e.getAsPrimitive());
}
});
您将在此博客文章中找到有关 ODataQueryBuilder 的一些信息。ResultElement 的文档可以在这里找到。