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

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

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

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

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

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

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

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

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

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

  • एपीआई प्रॉक्सी वर्चुअल होस्ट: "डिफ़ॉल्ट"
  • वर्चुअल होस्ट से तय किया गया डोमेन: "http://myOrg-prod.apigee.net"
  • प्रॉक्सी बेस पाथ: "/v1/weather"
  • रूट के नियम के मुताबिक तय TargetEndpoint: "डिफ़ॉल्ट"
  • टारगेट यूआरएल: "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/मौसम"
  • proxy.pathsuffix: "पूर्वानुमान"
  • 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 कई नीतियों के बारे में बताता है, जिनका इस्तेमाल अनुरोध और जवाब के डेटा को प्रोसेस करने के लिए किया जा सकता है. इन नीतियों में ये शामिल हैं:

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