如何查询OData操作的元数据?

时间:2017-01-26 12:48:28

标签: apache rest url odata olingo

我想查询OData操作的元数据,以便找出预期的参数以及它们的命名方式。

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

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

感谢您的投入!

1 个答案:

答案 0 :(得分:1)

您可以从EDM获取Action(或Actions),然后使用参数进行播放。如果这有帮助,请告诉我。

    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("---------------------");
    }