5

Ich muss in der Lage Karte sein ODataQueryOptions-RestRequest um eine RestRequest mit dem angegebenen Filter zur Ausgabe in der Lage sein zu konvertieren, und haben die folgende Hilfsklasse erstellt:Wie Filteroptionen von ODataQueryOptions zu RestRequest

public static class ODataQueryFilterToRestClient 
{ 
    public static RestRequest Map(ODataQueryOptions odataQuery) 
    { 
     var restRequest = new RestRequest(); 

     if (odataQuery.Filter != null) 
     { 
      restRequest.AddQueryParameter(@"$filter", odataQuery.Filter.RawValue); 
     } 

     if (odataQuery.Top != null) 
     { 
      restRequest.AddQueryParameter(@"$top", odataQuery.Top.RawValue); 
     } 

     if (odataQuery.Skip != null) 
     { 
      restRequest.AddQueryParameter(@"$skip", odataQuery.Skip.RawValue); 
     } 

     if (odataQuery.OrderBy != null) 
     { 
      restRequest.AddQueryParameter(@"$orderby", odataQuery.OrderBy.RawValue); 
     } 
     //etc 
     return restRequest; 
    } 
} 

da OdataQueryOptions unterstützt die folgenden:

enter image description here

gibt es einen einfacheren Weg, um die Konvertierung zwischen ODataQueryOptions zu machen zu RestClient oder einem anderen Rest-Client-Proxy?

Nebenbei bemerkt, ich weiß nicht , wenn es eine bessere Möglichkeit gibt, Parameter über einen Controller als ODataQueryOptions zu akzeptieren?

+0

Wie ich verstehe, möchten Sie eine andere API auf einem anderen Server aufrufen. Wenn dies der Fall ist, sollten Sie die Dokumentation dieser API überprüfen. Wenn es nicht OData ist, bezweifle ich, dass $ filter, $ select akzeptiert wird. – ErvinS

+0

Was genau ist das Problem mit Ihrem aktuellen Ansatz? Es ist nur ein Methodenaufruf.Wie stellen Sie sich etwas einfacher vor? –

Antwort

7

Es gibt keine direkte Unterstützung von ODataQueryOptions in RestSharp.

Es gibt andere Clients speziell für die Abfrage mit OData, z. Simple.OData.Client. Es funktioniert jedoch auch nicht mit ODataQueryOptions für Anfragen und bietet fließende API.

Insgesamt ODataQueryOptions wird eher auf einem Server-Seite in OData kompatiblen RESTful APIs verwendet. Clients (einschließlich RestSharp) verwenden nur ihre normale Syntax, um die Daten für die Anforderung bereitzustellen.

So beantwortet Ihre Frage (Gibt es einen einfacheren Weg ...) - Nein, gibt es nicht.

Ihre Konvertierungsmethode sieht jedoch nett und ziemlich einfach aus. Wenn ich einen Anruf mit RestSharp für gegebenes ODataQueryOptions machen müsste, würde ich dies genau auf die gleiche Weise tun.

Verwandte Themen