【问题标题】: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("---------------------");
}