मैं अपनी सक्रिय निर्देशिका के प्रबंधन के लिए एमएस ग्राफ एपीआई को लागू करने के लिए एक एडाप्टर (वेब ​​​​एपीआई जो पास के रूप में कार्य करेगा) बनाने की कोशिश कर रहा हूं।

एडी ऑब्जेक्ट्स जैसे एप्लिकेशन और उपयोगकर्ता हमारी एप्लिकेशन आवश्यकताओं को पूरा करने के लिए अनुकूलित किए जाएंगे (कुछ विशेषताओं को हटाकर, कुछ एक्सटेंशन विशेषताओं को जोड़ना आदि) और हमारे एप्लिकेशन विशिष्ट ऑब्जेक्ट से एडी ऑब्जेक्ट में परिवर्तन एमएस ग्राफ एपीआई को कॉल करने से पहले और बाद में हमारे एडेप्टर परत में होगा। .

MS ग्राफ़ API वर्तमान में OData प्रश्नों का समर्थन करता है। एप्लिकेशन और यूजर्स को पेज-वाइज पढ़ा जाएगा। अगर मुझे वेब एपीआई परत के माध्यम से अपने पास में वही ओडाटा विकल्प प्रदान करना है, तो मैं यह कैसे कर सकता हूं?

अर्थात।

  • एपीआई ए ओडाटा प्रश्नों का समर्थन करता है।
  • एपीआई बी उन तरीकों को कॉल करता है जो एपीआई ए में ओडाटा प्रश्नों का समर्थन करते हैं।
  • एपीआई बी क्लाइंट के संपर्क में है। जब क्लाइंट एपीआई बी से विधि को कॉल करता है OData $Filter के साथ, परिणाम वापस करना होगा।

मैं एपीआई बी में ओडाटा विकल्पों का समर्थन कैसे कर सकता हूं?

अग्रिम में धन्यवाद।

-1
SkS 31 जुलाई 2018, 13:50
स्टैक ओवरफ़्लो में आपका स्वागत है! चूंकि आप यहां नए हैं, इसलिए मैं कुछ सुझावों के लिए "मैं एक अच्छा प्रश्न कैसे पूछूं?" पढ़ने की सलाह देता हूं।
 – 
Marc LaFleur
1 अगस्त 2018, 17:28

2 जवाब

ठीक है, मुझे यकीन नहीं है कि मुझे आपका प्रश्न सही ढंग से मिल गया है, लेकिन जो मैं समझता हूं, आप केवल एपीआई कॉल को एमएस ग्राफ पर प्रॉक्सी करना चाहते हैं और प्रतिक्रिया के लिए फ्लाई पर कुछ बदलाव करना चाहते हैं।

OData क्वेरी केवल साधारण क्वेरी पैरामीटर हैं (OData ट्यूटोरियल देखें)। तो, मूल रूप से, आपको बस उन क्वेरी पैरामीटर को अपने प्रॉक्सी में प्राप्त करना होगा और उन्हें एमएस ग्राफ पर अग्रेषित करना होगा। फिर आपको जो प्रतिक्रिया मिलेगी वह मूल क्वेरी के अनुरूप होगी।

हालाँकि, आप डेटा को कैसे प्रबंधित करते हैं, इस पर निर्भर करते हुए, आप अंत में उपयोगकर्ता क्वेरी के अनुरूप नहीं हो सकते हैं। उदाहरण के लिए:

  • उपयोगकर्ता ने एक $select(Id) क्वेरी की, लेकिन आपका तर्क एक कस्टम प्रॉपर्टी Foo जोड़ता है। उपयोगकर्ता बस Id चाहता था लेकिन आपने Foo वैसे भी जोड़ा।
  • उपयोगकर्ता ने एक $orderby Name asc क्वेरी की, लेकिन आपका तर्क Name प्रॉपर्टी को संशोधित करता है। यह आपके तर्क के बाद आदेश नहीं दिया जा सकता है।
  • उपयोगकर्ता Foo संपत्ति पर $filter क्वेरी करना चाहता है। MS ग्राफ़ शिकायत करेगा क्योंकि उसे Foo संपत्ति का पता नहीं है।
  • आदि।

यदि आप उन मामलों को संभालना चाहते हैं, तो ठीक है, आपको विभिन्न ओडाटा प्रश्नों को पार्स करना होगा और तदनुसार अपने तर्क को अनुकूलित करना होगा। $orderby, $top/$skip, $count, $expand और $select काफी सीधे होने चाहिए ; $filter और $search को थोड़ा और काम करना होगा।

1
frankie567 1 अगस्त 2018, 16:56

धन्यवाद। मैं इसका समाधान ढूंढ रहा था। https:// समुदाय.एपिगी.com/questions/8642/how-do-we-fetch-the-query-parameters-odata-standar.html

OData क्वेरी पैरामीटर प्राप्त करने के लिए URL को पार्स करने के बजाय, मैं OData अनुरोधों को संसाधित करने के लिए मानक विधि को समझना चाहता था। अब मैं ओडाटा क्वेरी पैरामीटर निकालने और उन्हें एमएसजीआरएफ एपीआई में पास करने के लिए नीचे कर रहा हूं। स्ट्रिंग strODataQuery = String.Join("&", HttpContext.Request.Query.Where(kvp => kvp.Key.StartsWith("$")) .Select(kvp => String.Format("{0}={1 }", kvp.Key, Uri.EscapeDataString(kvp.Value))));

और मैं परिणाम प्राप्त करने के बाद रूपांतरण कर रहा हूँ।

सादर

0
SkS 22 अगस्त 2018, 08:09