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

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

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

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

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

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

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

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

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

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

  • एपीआई प्रॉक्सी वर्चुअल होस्ट: "डिफ़ॉल्ट"
  • वर्चुअल होस्ट से तय किया गया डोमेन: "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 शामिल है. एज, अनुरोध को नीचे बताए गए तरीके से पार्स करता है. साथ ही, फ़्लो वैरिएबल के लिए अनुरोध के कुछ हिस्से असाइन करता है:

{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 के इस्तेमाल की जाने वाली सुरक्षा जानकारी को हटाने के लिए. बैकएंड सेवा के लिए, यह जानकारी देना ज़रूरी नहीं है.
  • बैकएंड सेवा को भेजा गया डेटा जोड़ने के लिए. उदाहरण के लिए, उपयोगकर्ताओं को ट्रैक करने या आंकड़ों को इकट्ठा करने के लिए.
  • अनुरोध के डेटा के आधार पर, अनुरोध को शर्त के साथ प्रोसेस करने के लिए. उदाहरण के लिए, किसी एपीआई प्रॉक्सी में कई TargetEndpoints हो सकते हैं. अनुरोध में इस्तेमाल किए गए TargetEndpoint को, अनुरोध के डेटा से तय किया जाता है. इसके बाद, डेटा को बैकएंड सेवा पर भेजने से पहले, आपको अनुरोध से उस डेटा को हटा देना चाहिए.

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

ऐक्सेस के लिए किए गए अनुरोध के मैसेज

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

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

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

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

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

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

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

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

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

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

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