CloudSDK 能否帮助使用仅在运行时已知的 OData 实体类型?

Can the CloudSDK help consuming an OData entity type known only at runtime?

我们正在使用 Java 开发 Cloud Foundry 应用程序,它应该能够使用任何类型的 OData 实体。我们从目标服务获取基本路径,添加一些用户输入的路径,并希望存储我们从那里获得的结果。

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);

如果没有,您可以处理请求的 ResultElements,例如处理 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());
        }
    });

您将在 this blog post. The documentation for ResultElement can be found here 中找到有关 ODataQueryBuilder 的一些信息。