2017-04-06 80 views
5

我需要能夠從ODataQueryOptions轉換爲RestRequest,以便能夠發出與指定的過濾器RestRequest,並創建了以下輔助類:如何映射來自ODataQueryOptions過濾器選項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; 
    } 
} 

鑑於OdataQueryOptions支持以下功能:

enter image description here

有沒有更簡單,使ODataQueryOptions之間的轉換方式RestClient,或其他休息客戶端代理?

在附註中,我不知道是否有更好的方式通過控制器接受參數比ODataQueryOptions更好?

+0

據我所知,你想在另一臺服務器上調用另一個API。如果是這種情況,你應該檢查該API的文檔。如果它不是OData我懷疑它會接受$ filter,$ select。 – ErvinS

+0

你現在的方法到底是什麼問題?這只是一個方法調用。你怎麼想像更簡單的東西? –

回答

7

RestSharp沒有ODataQueryOptions的直接支持。

還有其他客戶端專門設計用於查詢OData,例如, Simple.OData.Client。但是它也不適用於ODataQueryOptions的請求,提供流暢的API。

整體ODataQueryOptions相當於在兼容RESTful API的服務器端使用OData。客戶(包括RestSharp)只是使用它們的常規語法來提供請求的數據。

所以回答你的問題(有一種更簡單的方法...) - 不,沒有。

但是,您的轉換方法看起來不錯,很簡單。如果我必須打電話RestSharp給定ODataQueryOptions,我會這樣做完全相同的方式。

相關問題