अनुरोध और रिस्पॉन्स वैरिएबल

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

एपीआई प्रॉक्सी को अनुरोध भेजते समय, यहां दी गई कोई भी या सभी जानकारी दी जा सकती है. हालांकि, यह इस बात पर निर्भर करता है कि एपीआई प्रॉक्सी को कैसे कॉन्फ़िगर किया गया है:

  • अनुरोध के हेडर
  • क्वेरी पैरामीटर
  • फ़ॉर्म डेटा
  • XML या JSON पेलोड
  • संसाधन यूआरआई

डिफ़ॉल्ट रूप से, अनुरोध में मौजूद सारा डेटा, ProxyEndpoint से TargetEndpoint में बिना किसी बदलाव के पास किया जाता है. इसलिए, जब TargetEndpoint, बैकएंड सर्वर से अनुरोध करता है, तो मूल अनुरोध में मौजूद पूरी जानकारी बैकएंड सेवा को भेज दी जाती है.

बैकएंड सेवा से Edge को मिले जवाब पर भी यही बात लागू होती है. डिफ़ॉल्ट रूप से, जवाब में मिला सारा डेटा, अनुरोध करने वाले ऐप्लिकेशन को बिना किसी बदलाव के भेज दिया जाता है.

अनुरोध का डेटा, बैकएंड सर्वर को कैसे भेजा जाता है?

नीचे दी गई इमेज में, एपीआई प्रॉक्सी की परिभाषा दिखाई गई है:

एचटीटीपी सेवा तक पहुंचने के लिए, एचटीटीपी क्लाइंट से प्रॉक्सी एंडपॉइंट के ज़रिए बैकएंड पर मौजूद टारगेट एंडपॉइंट को भेजा गया अनुरोध. प्रॉक्सी एंडपॉइंट और टारगेट एंडपॉइंट के उदाहरण दिए गए हैं.

इस एपीआई प्रॉक्सी के लिए:

  • एपीआई प्रॉक्सी वर्चुअल होस्ट: "default"
  • वर्चुअल होस्ट से तय किया गया डोमेन: "http://myOrg-prod.apigee.net"
  • प्रॉक्सी बेस पाथ: "/v1/weather"
  • रूट के नियम के हिसाब से TargetEndpoint: "default"
  • टारगेट यूआरएल: "http://weather.yahooapis.com"

क्लाइंट ऐप्लिकेशन, एपीआई प्रॉक्सी को GET अनुरोध भेजता है. इसके लिए, वह curl कमांड का इस्तेमाल करता है:

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

ध्यान दें कि इस अनुरोध में "forecastrss" रिसॉर्स और एक क्वेरी पैरामीटर, w शामिल है. Edge, अनुरोध को नीचे दिए गए तरीके से पार्स करता है और अनुरोध के कुछ हिस्सों को फ़्लो वैरिएबल असाइन करता है:

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

फ़्लो वैरिएबल को इन वैल्यू के साथ सेट किया जाता है:

  • request.verb: "GET"
  • proxy.basepath: "/v1/weather"
  • proxy.pathsuffix: "forecastrss"
  • request.querystring: "w=12797282"

इसके बाद, TargetEndpoint अनुरोध में मौजूद जानकारी का इस्तेमाल करके, बैकएंड सेवा से अनुरोध करता है:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

ध्यान दें कि अनुरोध में बताए गए संसाधन और क्वेरी पैरामीटर, बैकएंड सर्वर को किए गए अनुरोध में अपने-आप शामिल हो जाते हैं. TargetEndpoint की परिभाषा के हिसाब से, अनुरोध इस तरह का होगा:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

क्वेरी पैरामीटर की तरह, एपीआई प्रॉक्सी को भेजे गए अनुरोध में शामिल किए गए हेडर या फ़ॉर्म पैरामीटर, बैकएंड सर्वर को पास कर दिए जाते हैं. उदाहरण के लिए, आपने यहां दिया गया अनुरोध किया है. इसमें एक हेडर शामिल है:

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

इसके अलावा, हेडर और फ़ॉर्म डेटा शामिल करने के लिए, नीचे दिए गए फ़ॉर्म में अनुरोध करें:

curl -X POST -H "Content-type:application/json" -d \
  '{"email" : "janetutorialxml@example.com",
    "firstName" : "Jane",
    "lastName" : "Tutorial",
    "userName" : "jtutorialxml"
  }' \
  http://myOrg-prod.apigee.net/v1/register/user

दोनों उदाहरणों में, हेडर और फ़ॉर्म डेटा को बिना किसी बदलाव के बैकएंड सेवा में भेजा जाता है. हेडर को फ़्लो वैरिएबल के तौर पर दिखाया जाता है. जैसे, request.headers.count और request.headers.names. फ़ॉर्म का डेटा, फ़्लो वैरिएबल के ज़रिए दिखाया जाता है. जैसे, request.formparam.count और request.formparam.names.

जवाब का डेटा कैसे दिखाया जाता है?

डिफ़ॉल्ट रूप से, Edge को बैकएंड सेवा से जवाब में मिलने वाला सारा डेटा, अनुरोध करने वाले ऐप्लिकेशन को बिना किसी बदलाव के पास कर दिया जाता है. अनुरोध के लिए ऊपर बताए गए तरीके के मुताबिक, जवाब में मिला डेटा, Edge पर फ़्लो वैरिएबल के ज़रिए ऐक्सेस किया जा सकता है. ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.

किसी एपीआई प्रॉक्सी में अनुरोध और जवाब का डेटा ऐक्सेस करना

कई बार ऐसा होता है, जब आपको अनुरोध के डेटा में बदलाव करना होता है. ऐसा बैकएंड सर्वर को डेटा भेजने से पहले किया जाता है. उदाहरण के लिए:

  • इस कुकी का इस्तेमाल, Edge में सुरक्षा से जुड़ी उस जानकारी को हटाने के लिए किया जाता है जिसका इस्तेमाल अनुरोधों की पुष्टि करने के लिए किया जाता है. इस जानकारी की ज़रूरत बैकएंड सेवा को नहीं होती.
  • बैकएंड सेवा को भेजे गए डेटा को जोड़ने के लिए. उदाहरण के लिए, उपयोगकर्ताओं को ट्रैक करने या आंकड़ों को इकट्ठा करने के लिए.
  • अनुरोध के डेटा के आधार पर, अनुरोध को शर्तों के साथ प्रोसेस करने के लिए. उदाहरण के लिए, किसी एपीआई प्रॉक्सी में कई TargetEndpoint हो सकते हैं. अनुरोध में इस्तेमाल किया गया TargetEndpoint, अनुरोध के डेटा से तय होता है. इसके बाद, बैकएंड सेवा को भेजने से पहले, अनुरोध से उस डेटा को हटा दें.

जवाब में मौजूद डेटा के लिए भी यही बात लागू होती है. जवाब को प्रोसेस करने के दौरान, एपीआई प्रॉक्सी अनुरोध करने वाले ऐप्लिकेशन को डेटा वापस भेजने से पहले, उसमें बदलाव कर सकती है.

ऐक्सेस के अनुरोध वाले मैसेज

अनुरोध के मैसेज के कुछ हिस्सों को ऐक्सेस करने और उनमें बदलाव करने के लिए, नीतियों का इस्तेमाल किया जा सकता है. इनमें ये शामिल हैं:

  • हेडर
  • क्वेरी पैरामीटर
  • फ़ॉर्म पैरामीटर
  • सोर्स आईपी पता
  • एचटीटीपी मैसेज का मुख्य हिस्सा

सामान्य फ़्लो में, अनुरोध प्रोसेस हो जाने के बाद प्रॉक्सी, बदले गए अनुरोध को टारगेट पर भेजता है.

नीतियां, अनुरोध के वैरिएबल की जांच कर सकती हैं. इसके बाद, उन वैरिएबल के कॉन्टेंट के आधार पर अनुरोध को बदल सकती हैं या अस्वीकार कर सकती हैं. नीतियां, अनुरोध को बदलकर सही वैरिएबल सेट करती हैं. उदाहरण के लिए, अनुरोध के हेडर से जुड़े वैरिएबल.

जवाब वाले मैसेज ऐक्सेस करना

जवाब के मैसेज पर लागू होने वाले वैरिएबल का इस्तेमाल करके, नीतियां मैसेज कॉम्पोनेंट को ऐक्सेस कर सकती हैं. इनमें हेडर, क्वेरी पैरामीटर, फ़ॉर्म पैरामीटर, सोर्स आईपी पता, एचटीटीपी मैसेज का मुख्य हिस्सा वगैरह शामिल हैं.

प्रॉक्सी को जवाब का मैसेज मिलता है. इसके बाद, वह जवाब में मौजूद शर्तों के आधार पर, उस पर नीतियों की एक सीरीज़ लागू करता है. इससे जवाब में बदलाव किया जा सकता है या उसे बदला जा सकता है.

नीतियों में, जवाब देने के लिए इस्तेमाल की गई वैरिएबल की जांच की जा सकती है. इसके बाद, उन वैरिएबल के कॉन्टेंट के आधार पर अनुरोध को बदला जा सकता है या अस्वीकार किया जा सकता है. नीतियां, सही वैरिएबल सेट करके जवाब को बदल देती हैं. उदाहरण के लिए, जवाब के हेडर से जुड़े वैरिएबल.

फ़्लो वैरिएबल को ऐक्सेस करने से जुड़ी सामान्य नीतियां

Edge, कई नीतियां तय करता है. इनका इस्तेमाल अनुरोध और जवाब के डेटा को प्रोसेस करने के लिए किया जा सकता है. इन नीतियों में ये शामिल हैं:

  • AssignMessage नीति: यह नीति, एपीआई प्रॉक्सी फ़्लो के दौरान एचटीटीपी अनुरोध या रिस्पॉन्स मैसेज बनाती है या उनमें बदलाव करती है. यह नए फ़्लो वैरिएबल भी बनाता है और उनमें डेटा भरता है.
  • ExtractVariables नीति: इस नीति का इस्तेमाल, शर्त वाले स्टेटमेंट में इस्तेमाल करने के लिए किया जाता है. यह नीति, मैसेज से कॉन्टेंट एक्सट्रैक्ट करती है. जैसे, हेडर, यूआरआई पाथ, पेलोड, और क्वेरी पैरामीटर. इसके बाद, नीति मैसेज के कॉन्टेंट पर टेक्स्ट पैटर्न लागू करती है. साथ ही, मिलते-जुलते मैसेज मिलने पर, तय किया गया वैरिएबल सेट करती है.
  • JSONtoXML नीति और XMLtoJSON नीति: यह नीति, मैसेज को JavaScript ऑब्जेक्ट Notation (JSON) से एक्सटेंसिबल मार्कअप लैंग्वेज (XML) फ़ॉर्मैट में बदलती है या इसके उलट करती है.
  • JavaCallout नीति, JavaScript नीति, PythonScript नीति, RegularExpressionProtection नीति: इन नीतियों की मदद से, अनुरोध और जवाब का डेटा रखने वाले फ़्लो वैरिएबल को ऐक्सेस करने के लिए स्क्रिप्ट लिखी जा सकती है.