【问题标题】:How to query metadata of an OData action?如何查询 OData 操作的元数据?
【发布时间】:2017-06-11 22:40:29
【问题描述】:

我想查询 OData 操作的元数据,以了解需要哪些参数以及它们是如何命名的。

我知道,我可以通过输入 link-to-service-root.com/service.svc/$metadata 来解决这个问题。但是,在这种情况下,我必须挖掘完整的元数据输出。

相反,我正在寻找一种优雅的方式来做到这一点。也许存在一个查询link-to-service-root.com/service.svc/$metadata/Action('Namespace.NameOfAction')(灵感来自queryable odata metadata 上的博客文章)。

感谢您的意见!

【问题讨论】:

    标签: apache rest url odata olingo


    【解决方案1】:

    您可以从 EDM 中获取一个(或多个动作),然后使用参数进行播放。让我知道这是否有帮助。

        String serviceRoot = "http://services.odata.org/V4/TripPinServiceRW/";
        EdmMetadataRequest request = ODataClientFactory.getClient().getRetrieveRequestFactory().getMetadataRequest(serviceRoot);
        ODataRetrieveResponse<Edm> response = request.execute();
        Edm edm = response.getBody();
        List<EdmAction> edmActions = edm.getSchemas().get(0).getActions(); //get the first schema
        for (EdmAction action : edmActions) {
            System.out.println("Action name: " + action.getName());
            List<String> actionParamNames = action.getParameterNames();
            System.out.println("Parameters: ");
            for (String actionParamName : actionParamNames) {
                EdmParameter param = action.getParameter(actionParamName);
                System.out.println(param.getName() + " (" + param.getType().getName() + ")");
                 //getMaxLength //getPrecision //isNullable //isCollection //etc.   
            }
            System.out.println("---------------------");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多