आपको Apigee Edge दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
फ़्लो, एपीआई प्रॉक्सी बनाने के बुनियादी ब्लॉक होते हैं. फ़्लो की मदद से, एपीआई के काम करने के तरीके को प्रोग्राम किया जा सकता है. इसकी मदद से, एपीआई प्रॉक्सी की मदद से लागू की जाने वाली नीतियों और कोड को कॉन्फ़िगर किया जा सकता है.
फ़्लो के बारे में खास जानकारी के लिए, फ़्लो के साथ प्रोक्सी के काम करने का तरीका कंट्रोल करना लेख पढ़ें.
इस विषय में, शर्तों के हिसाब से फ़्लो बनाने और फ़्लो में लॉजिक (नीतियां) जोड़ने का तरीका बताया गया है. शर्तें बनाने के बारे में इस विषय में ज़्यादा जानकारी नहीं दी गई है. इस बारे में ज़्यादा जानने के लिए, फ़्लो वैरिएबल की खास जानकारी और फ़्लो वैरिएबल के साथ शर्तें लेख पढ़ें.
फ़्लो में नीतियां अटैच करना
Edge में, सुरक्षा लागू करने, ट्रैफ़िक मैनेज करने, और मैसेज में बदलाव करने के लिए, पहले से तय कई तरह की नीतियां मौजूद होती हैं. इसके अलावा, मैसेज प्रोसेसिंग को पूरी तरह से पसंद के मुताबिक बनाने के लिए, नीतियों की मदद से अपना कस्टम कोड जोड़ा जा सकता है.
उदाहरण के लिए:
- प्रॉक्सीएंडपॉइंट के PreFlow का अनुरोध करने के लिए, OAuth की सुरक्षा नीति जोड़ें. ProxyEndpoint का अनुरोध PreFlow, पाइपलाइन का पहला फ़्लो होता है. इसलिए, अगर कोई अनुरोध आपकी सुरक्षा नीतियों का उल्लंघन करता है, तो उसे तुरंत अस्वीकार किया जा सकता है.
- JSON से एक्सएमएल में बदलने के लिए, TargetEndpoint के जवाब PostFlow में JSON से एक्सएमएल कन्वर्ज़न की नीति अटैच करें.
- अनुरोध को प्रोसेस करने के लिए, JavaScript कोड को चलाने के लिए, ProxyEndpoint के कंडीशनल फ़्लो में JavaScript की नीति अटैच करें
कंडिशनल फ़्लो बनाने के बाद, वह नीति अटैचमेंट के लिए उपलब्ध हो जाता है. फ़्लो चुनने के बाद, अनुरोध या जवाब के डायग्राम में + चरण आइकॉन पर क्लिक करके, फ़्लो में कोई नई या मौजूदा नीति जोड़ें.
चुनी गई नीति को फ़्लो से अटैच करके, एपीआई प्रॉक्सी को कॉन्फ़िगर किया जा रहा है, ताकि सिर्फ़ उस फ़्लो यूआरआई और वर्ब कॉम्बिनेशन के लिए कोटा नीति लागू की जा सके. उदाहरण के लिए, अगर अनुरोध में मौजूद जानें फ़्लो में नीति जोड़ी जाती है, तो प्रॉक्सी एडिटर के कोड व्यू में यह एक्सएमएल जनरेट होता है:
<ProxyEndpoint name="default"> ... <Flow name="issue"> <Description/> <Request> <Step> <Name>Quota-2</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition> </Flow> ... </ProxyEndpoint>
इस कॉन्फ़िगरेशन में, अगर एपीआई प्रॉक्सी पर GET अनुरोध, यूआरआई के पैटर्न .../issue/** (/issue/ के साथ, आखिरी फ़ॉरवर्ड स्लैश के बाद यूआरआई में कुछ भी) के साथ आता है, तो उस एपीआई कॉल पर कोटा लागू होता है.
कंडिशनल फ़्लो के बारे में जानकारी
PreFlow या PostFlow से जुड़ी कोई भी नीति हमेशा लागू की जाती है. हालांकि, कंडीशनल फ़्लो में मौजूद नीतियां सिर्फ़ तब लागू होती हैं, जब फ़्लो की शर्त सही हो.
अनुरोध और जवाब को प्रोसेस करने के दौरान, हर सेगमेंट के लिए सिर्फ़ एक शर्त वाला फ़्लो लागू किया जाता है. यह वह पहला फ़्लो होता है जिसकी शर्त सही होती है. इसका मतलब है कि आपके पास इनमें से हर एक के हिस्से के तौर पर, एक शर्त वाला फ़्लो लागू करने का विकल्प है:
- ProxyEndpoint की अनुरोध पाइपलाइन
- TargetEndpoint की अनुरोध पाइपलाइन
- ProxyEndpoint की रिस्पॉन्स पाइपलाइन
- TargetEndpoint की रिस्पॉन्स पाइपलाइन
वीडियो: शर्तों के हिसाब से फ़्लो के बारे में ज़्यादा जानने के लिए, यह छोटा वीडियो देखें.
उदाहरण के लिए, यहां दी गई ProxyEndpoint की परिभाषा में एक शर्त वाला फ़्लो दिखाया गया है. यह फ़्लो, एपीआई प्रॉक्सी के किसी भी HTTP GET
अनुरोध पर, ProxyEndpoint की मदद से लागू किया जाता है:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>request.verb="GET"</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
ध्यान दें कि शर्त में request.verb फ़्लो वैरिएबल का रेफ़रंस दिया गया है. फ़्लो वैरिएबल, नाम वाले रेफ़रंस होते हैं. इनमें Edge से प्रोसेस किए गए एपीआई ट्रांज़ैक्शन से जुड़ी स्थिति की जानकारी होती है. Edge, कई स्टेट वैरिएबल तय करता है जिन्हें रेफ़र किया जा सकता है.
RESTful सेवाएं, एपीआई रिसॉर्स का कलेक्शन होती हैं. एपीआई रिसॉर्स, यूआरआई पाथ फ़्रैगमेंट होता है. यह ऐसी इकाई की पहचान करता है जिसे डेवलपर आपके एपीआई को कॉल करके ऐक्सेस कर सकते हैं. उदाहरण के लिए, अगर आपकी सेवा का बैकएंड, मौसम की रिपोर्ट और मौसम के पूर्वानुमान उपलब्ध कराता है, तो आपका एपीआई दो शर्तों वाले ऐसे दो फ़्लो तय कर सकता है जो उन एपीआई संसाधनों से मैप होते हैं: /reports
और /forecasts
. जब किसी एपीआई कॉल में यूआरएल में उनमें से कोई एक संसाधन शामिल होता है, तो शर्त सही के तौर पर लागू होती है और शर्त के हिसाब से फ़्लो से जुड़ा लॉजिक लागू होता है.
इसके बाद, ऐप्लिकेशन डेवलपर इस फ़ॉर्म में यूआरएल के लिए अनुरोध करके, आपके संसाधनों को ऐक्सेस करते हैं:
http://myAPIs.myCo.com/weather/reports
या:
http://myAPIs.myCo.com/weather/forecasts
एपीआई प्रॉक्सी में, किसी खास संसाधन से जुड़ा शर्त वाला फ़्लो तय किया जा सकता है:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition> <Request/> <Response/> </Flow> <Flow name="Flow-2"> <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
इस उदाहरण में, proxy.pathsuffix
फ़्लो वैरिएबल का रेफ़रंस दिया गया है. इसमें एपीआई प्रॉक्सी को ऐक्सेस करने के लिए इस्तेमाल किए गए यूआरएल का सफ़िक्स हिस्सा शामिल होता है. इसके बाद, हर संसाधन के लिए शर्तों के मुताबिक फ़्लो में अलग-अलग नीतियां जोड़ी जा सकती हैं.
शर्त के हिसाब से फ़्लो जोड़ना
इस छोटे उदाहरण में, एक ऐसा फ़्लो सेट अप किया गया है जो सिर्फ़ तब काम करता है, जब अनुरोध मैसेज एचटीटीपी जीईटी हो.
कंडिशनल फ़्लो जोड़ने के लिए, एपीआई प्रॉक्सी बिल्डर में डेवलप करें टैब चुनें.
मनचाहे एंडपॉइंट में + आइकॉन पर क्लिक करें.
नया शर्त वाला फ़्लो फ़ॉर्म की मदद से, फ़्लो का नाम दिया जा सकता है और शर्त कॉन्फ़िगर की जा सकती है. नीचे दिए गए उदाहरण में, एक आसान शर्त जोड़ी गई है. यह शर्त, बेस पाथ के बाद किसी भी यूआरएल पर GET
वर्ब (PUT
, POST
वगैरह के बजाय) के लिए, अनुरोध मैसेज के एचटीटीपी का आकलन करती है.
(फ़्लो वैरिएबल और शर्तों में शर्तों वाले स्टेटमेंट बनाने का तरीका जानें.)
Flow-1 नाम का नया फ़्लो, अब नेविगेटर मेन्यू में दिखता है.
अब ProxyEndpoint के लिए एक्सएमएल कॉन्फ़िगरेशन देखें. नेविगेटर मेन्यू में, फ़्लो-1 चुनें.
आपको यह कॉन्फ़िगरेशन दिखेगा.
<PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Request/> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition> </Flow> </Flows> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow>
अगले चरण
शर्तें तय करने और वैरिएबल इस्तेमाल करने के बारे में ज़्यादा जानकारी पाने के लिए, यहां दिए गए विषय पढ़ें: