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

जैसा कि मैं समझता हूं, आप एक अलग सर्वर पर एक और एपीआई कॉल करना चाहते हैं। यदि ऐसा है तो आपको शायद उस एपीआई के दस्तावेज़ीकरण की जांच करनी चाहिए। यदि यह ओडाटा नहीं है तो मुझे संदेह है कि यह $ फ़िल्टर स्वीकार करेगा, $ चुनें। – ErvinS

+0

आपके वर्तमान दृष्टिकोण में क्या समस्या है? यह सिर्फ एक विधि कॉल है। आप कुछ आसान कैसे सोचते हैं? –

उत्तर

7

RestSharp में ODataQueryOptions का कोई प्रत्यक्ष समर्थन नहीं है।

अन्य क्लाइंट विशेष रूप से OData से पूछताछ के लिए डिज़ाइन किए गए हैं, उदाहरण के लिए Simple.OData.Client। हालांकि यह धाराप्रवाह एपीआई प्रदान करने के अनुरोधों के लिए ODataQueryOptions के साथ भी काम नहीं करता है।

कुल मिलाकर ODataQueryOptionsOData संगत रीस्टफुल एपीआई में सर्वर-साइड पर उपयोग किया जाता है। ग्राहक (RestSharp समेत) अनुरोध के लिए डेटा प्रदान करने के लिए बस अपने नियमित वाक्यविन्यास का उपयोग करें।

तो अपने प्रश्न का उत्तर दें (क्या कोई आसान तरीका है ...) - नहीं, ऐसा नहीं है।

हालांकि आपकी रूपांतरण विधि अच्छी और सुंदर लगती है। अगर मुझे के साथ ODataQueryOptions के लिए कॉल करना पड़ा, तो मैं इसे वही तरीके से करूँगा।

संबंधित मुद्दे