我想查询OData操作的元数据,以便找出预期的参数以及它们的命名方式。
我知道,我可以通过输入link-to-service-root.com/service.svc/$metadata
来解决这个问题。但是,在这种情况下,我必须深入研究完整的元数据输出。
相反,我正在寻找一种优雅的方式来做到这一点。也许存在查询link-to-service-root.com/service.svc/$metadata/Action('Namespace.NameOfAction')
(受queryable odata metadata上的博客文章的启发)。
感谢您的投入!
答案 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("---------------------");
}