2017-01-26 3 views
0

Ich möchte Metadaten einer OData-Aktion abfragen, um herauszufinden, welche Parameter erwartet werden und wie sie benannt werden.Wie kann ich Metadaten einer OData-Aktion abfragen?

Ich bin mir bewusst, dass ich dies durch Eingabe von link-to-service-root.com/service.svc/$metadata herausfinden kann. In diesem Fall muss ich jedoch die komplette Metadatenausgabe durchforsten.

Stattdessen suche ich eine elegante Möglichkeit, dies zu tun. Vielleicht gibt es eine Abfrage link-to-service-root.com/service.svc/$metadata/Action('Namespace.NameOfAction') (inspiriert von Blog-Post auf queryable odata metadata).

Vielen Dank für Ihre Eingabe!

Antwort

1

Sie können die Aktion (oder Aktionen) vom EDM abrufen und dann mit Parametern spielen. Lassen Sie mich wissen, ob das hilft.

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