पॉलिसी कंपोज़िशन का इस्तेमाल करना

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

इस विषय में, नीति कंपोज़िशन का इस्तेमाल करके मैशअप बनाने का तरीका बताया गया है. पॉलिसी कंपोज़िशन एक Apigee प्रॉक्सी पैटर्न है. इसकी मदद से, नीतियों का इस्तेमाल करके, कई बैकएंड टारगेट से मिले नतीजों को एक जवाब में जोड़ा जा सकता है.

नीति कंपोज़िशन की सामान्य जानकारी के लिए, एपीआई प्रॉक्सी कुकबुक पैटर्न में, "नीति कंपोज़िशन पैटर्न" देखें.

सैंपल कोड डाउनलोड करें और उसे आज़माएं

कुकबुक के इस उदाहरण के बारे में जानकारी

कुकबुक के इस उदाहरण में, नीति कंपोज़िशन नाम के एपीआई प्रॉक्सी पैटर्न के बारे में बताया गया है. इस पैटर्न से कई बैकएंड सोर्स से डेटा को मैश अप करने का एक तरीका (अन्य विकल्प भी होते हैं) मिलता है. सामान्य तौर पर, इस विषय से पता चलता है कि मनमुताबिक नतीजा पाने के लिए, नीतियों को कैसे जोड़ा और एक साथ जोड़ा जा सकता है. इस पैटर्न की सामान्य जानकारी और इससे मिलती-जुलती अन्य जानकारी के लिए, एपीआई प्रॉक्सी कुकबुक पैटर्न देखें.

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

  • Google जियोकोडिंग एपीआई: यह एपीआई, पतों (जैसे "1600 Amphitheatre Parkway, Mountain View, CA") को भौगोलिक निर्देशांक (जैसे कि अक्षांश 37.423021 और देशांतर -122.083739) में बदलता है.
  • Google एलिवेशन एपीआई यह एपीआई, पृथ्वी की जगहों की जानकारी के लिए ऊंचाई वाले डेटा के बारे में क्वेरी करने के लिए एक आसान इंटरफ़ेस उपलब्ध कराता है. इस उदाहरण में, जियोकोडिंग एपीआई से लौटाए गए निर्देशांकों का इस्तेमाल इस एपीआई में इनपुट के तौर पर किया जाएगा.

ऐप्लिकेशन डेवलपर इस एपीआई प्रॉक्सी को दो क्वेरी पैरामीटर, एक पिन कोड और एक देश आईडी के साथ कॉल करेंगे:

$ curl "http://{myorg}-test.apigee.net/policy-mashup-cookbook?country=us&postalcode=08008"

रिस्पॉन्स एक JSON ऑब्जेक्ट है, जिसमें दिए गए पिन कोड वाले इलाके के बीच की जगह (अक्षांश/देशांतर) को जियोकोड किया गया जगह और उस जगह की ऊंचाई से जुड़ी जानकारी शामिल है.

{  
   "ElevationResponse":{  
      "status":"OK",
      "result":{  
         "location":{  
            "lat":"39.7500713",
            "lng":"-74.1357407"
         },
         "elevation":"0.5045232",
         "resolution":"76.3516159"
      }
   }
}

शुरू करने से पहले

अगर आपको नीति कंपोज़िशन पैटर्न की खास जानकारी पढ़नी है, तो एपीआई प्रॉक्सी कुकबुक पैटर्न में, "नीति कंपोज़िशन पैटर्न" देखें.

कुकबुक के इस उदाहरण के बारे में जानने से पहले, आपको इन बुनियादी सिद्धांतों के बारे में भी पता होना चाहिए:

  • नीतियां क्या हैं और उन्हें प्रॉक्सी में कैसे जोड़ा जा सकता है. नीतियों के बारे में अच्छी तरह से जानने के लिए, नीति क्या है? देखें.
  • एपीआई प्रॉक्सी फ़्लो का स्ट्रक्चर, जैसा कि फ़्लो कॉन्फ़िगर करना लेख में बताया गया है. फ़्लो की मदद से, उस क्रम को तय किया जा सकता है जिसमें एपीआई प्रॉक्सी के ज़रिए नीतियां लागू की जाती हैं. इस उदाहरण में, कई नीतियां बनाई गई हैं और एपीआई प्रॉक्सी के फ़्लो में जोड़े गए हैं.
  • आपके फ़ाइल सिस्टम में एपीआई प्रॉक्सी प्रोजेक्ट को कैसे व्यवस्थित किया जाता है, जैसा कि एपीआई प्रॉक्सी कॉन्फ़िगरेशन के रेफ़रंस में बताया गया है. कुकबुक के इस विषय में, क्लाउड-आधारित डेवलपमेंट के बजाय लोकल डेवलपमेंट (फ़ाइल सिस्टम-आधारित) के बारे में बताया गया है. इसमें एपीआई प्रॉक्सी डेवलप करने के लिए, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल किया जा सकता है.
  • एपीआई पासकोड की पुष्टि करने वाले टूल का इस्तेमाल. यह ऐप्लिकेशन आधारित सुरक्षा का सबसे आसान तरीका है, जिसे एपीआई के लिए कॉन्फ़िगर किया जा सकता है. ज़्यादा जानकारी के लिए, एपीआई पासकोड देखें. इसके अलावा, एपीआई पासकोड को सुरक्षित करने से जुड़ा ट्यूटोरियल भी देखा जा सकता है.
  • एक्सएमएल पर काम करने की जानकारी. इस उदाहरण में, हम फ़ाइल सिस्टम में मौजूद एक्सएमएल फ़ाइलों के साथ, एपीआई प्रॉक्सी और उसकी नीतियां बनाते हैं.

अगर आपने सैंपल कोड डाउनलोड किया है, तो mashup-policy-cookbook सैंपल फ़ोल्डर में जाकर, इस विषय में बताई गई सभी फ़ाइलें खोजी जा सकती हैं. नीचे दिए गए सेक्शन में, सैंपल कोड के बारे में पूरी जानकारी दी गई है.

फ़्लो के साथ आगे बढ़ें

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

डाउनलोड किए गए सैंपल में, आपको यह एक्सएमएल फ़ाइल doc-samples/policy-mashup-cookbook/apiproxy/proxies/default.xml में मिल सकती है.

<ProxyEndpoint name="default">
  <Flows>
    <Flow name="default">
      <Request>
            <!-- Generate request message for the Google Geocoding API -->
            <Step><Name>GenerateGeocodingRequest</Name></Step>
            <!-- Call the Google Geocoding API -->
            <Step><Name>ExecuteGeocodingRequest</Name></Step>
            <!-- Parse the response and set variables -->
            <Step><Name>ParseGeocodingResponse</Name></Step>
            <!-- Generate request message for the Google Elevation API -->
            <Step><Name>AssignElevationParameters</Name></Step>
      </Request>
      <Response>
            <!-- Parse the response message from the Elevation API -->
            <Step><Name>ParseElevationResponse</Name></Step>
            <!-- Generate the final JSON-formatted response with JavaScript -->
            <Step><Name>GenerateResponse</Name></Step>
      </Response>
    </Flow>
  </Flows>

  <HTTPProxyConnection>
    <!-- Add a base path to the ProxyEndpoint for URI pattern matching-->
    <BasePath>/policy-mashup-cookbook</BasePath>
    <!-- Listen on both HTTP and HTTPS endpoints -->
    <VirtualHost>default</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  <RouteRule name="default">
    <!-- Connect ProxyEndpoint to named TargetEndpoint under /targets -->
    <TargetEndpoint>default</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>

फ़्लो के एलिमेंट की खास जानकारी यहां दी गई है.

  • <Request> - <Request> एलिमेंट में कई <Step> एलिमेंट होते हैं. हर चरण एक नीति का ज़िक्र करता है, जिसे हम इस विषय के बाकी हिस्से में बनाएंगे. इन नीतियों में, अनुरोध वाला मैसेज बनाने, उसे भेजने, और रिस्पॉन्स को पार्स करने से जुड़ी जानकारी शामिल है. इस विषय के आखिर में, आपको यह पता चल जाएगा कि इनमें से हर नीति की भूमिका क्या है.
  • <Response> - <Response> एलिमेंट में <Steps> भी शामिल होते हैं. इन चरणों में वे नीतियां भी शामिल होती हैं जो टारगेट एंडपॉइंट (Google एलिवेशन एपीआई) से आखिरी रिस्पॉन्स प्रोसेस करने के लिए ज़िम्मेदार होती हैं.
  • <HttpProxyConnection> - यह एलिमेंट इस बारे में जानकारी देता है कि ऐप्लिकेशन इस एपीआई प्रॉक्सी से कैसे कनेक्ट होंगे. इसमें <BasePath> शामिल है. यह बताता है कि इस एपीआई को कैसे कॉल किया जाएगा.
  • <RouteRule> - यह एलिमेंट बताता है कि इनबाउंड अनुरोध वाले मैसेज प्रोसेस होने के तुरंत बाद क्या होता है. इस मामले में, TargetEndpoint कॉल किया जाता है. हम इस विषय में आगे इस अहम चरण के बारे में ज़्यादा चर्चा करेंगे.

नीतियां बनाना

नीचे दिए गए सेक्शन में, हर उस नीति के बारे में बताया गया है जो इस नीति के तहत बनाई गई है.

असाइन किए जाने वाले मैसेज की पहली नीति बनाएं

नीचे दी गई सूची में, पहली AssignMessage नीति, अनुरोध के लिए एक मैसेज बनाती है. इस मैसेज को Google जियोकोडिंग सेवा को भेजा जाएगा.

चलिए, नीति कोड के बारे में जानते हैं और इसके बाद, इसके एलिमेंट की ज़्यादा जानकारी देंगे. डाउनलोड किए गए सैंपल में, आपको यह एक्सएमएल फ़ाइल doc-samples/policy-mashup-cookbook/apiproxy/policies/GenerateGeocodingRequest.xml में मिल सकती है.

<AssignMessage name="GenerateGeocodingRequest">
  <AssignTo createNew="true" type="request">GeocodingRequest</AssignTo>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.postalcode}</QueryParam>
      <QueryParam name="region">{request.queryparam.country}</QueryParam>
      <QueryParam name="sensor">false</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <!-- Set variables for use in the final response -->
  <AssignVariable>
    <Name>PostalCode</Name>
    <Ref>request.queryparam.postalcode</Ref>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
  </AssignVariable>
</AssignMessage>

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

  • <assignMessage name> - इस नीति को कोई नाम देता है. इस नाम का इस्तेमाल तब किया जाता है, जब किसी फ़्लो में नीति का रेफ़रंस दिया जाता है.
  • <AssignTo> - GeocodingRequest नाम का एक वैरिएबल बनाता है. यह वैरिएबल, अनुरोध वाले उस ऑब्जेक्ट को इकट्ठा करता है जिसे Service कॉलआउट नीति के तहत बैकएंड को भेजा जाएगा.
  • <QueryParams> - यह बैकएंड एपीआई कॉल के लिए ज़रूरी क्वेरी पैरामीटर सेट करता है. इस मामले में, जियोकोडिंग एपीआई को जगह की जानकारी चाहिए, जिसे पिन कोड और देश आईडी से दिखाया जाता है. ऐप्लिकेशन का इस्तेमाल करने वाला व्यक्ति ही इस जानकारी को देता है और हमने इसे यहां से इकट्ठा किया है. एपीआई के लिए sensor पैरामीटर की ज़रूरत होती है और यह सही या गलत होता है. साथ ही, हमने यहां इसे 'गलत' पर हार्डकोड कर दिया है.
  • <Verb> - इस मामले में, हम एपीआई को एक आसान जीईटी अनुरोध भेज रहे हैं.
  • <AssignVariable> - ये वैरिएबल उन वैल्यू को स्टोर करते हैं जिन्हें हम एपीआई को पास करते हैं. इस उदाहरण में, क्लाइंट के रिस्पॉन्स के तौर पर वैरिएबल को बाद में ऐक्सेस किया जाएगा.

सेवा कॉलआउट की मदद से अनुरोध भेजें

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

पहले की तरह ही, आइए पहले कोड पर नज़र डालें. इसका विस्तृत विवरण नीचे दिया गया है. इस नीति के बारे में ज़्यादा जानने के लिए, सेवा की कॉलआउट नीति पढ़ें. डाउनलोड किए गए सैंपल में, आपको यह एक्सएमएल फ़ाइल doc-samples/policy-mashup-cookbook/apiproxy/policies/ExecuteGeocodingRequest.xml में मिल सकती है.

<ServiceCallout name="ExecuteGeocodingRequest">
  <Request variable="GeocodingRequest"/>
  <Response>GeocodingResponse</Response>
  <HTTPTargetConnection>
    <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
  </HTTPTargetConnection>
</ServiceCallout>

यहां इस नीति के एलिमेंट के बारे में कम शब्दों में बताया गया है.

  • <ServiceCallout> - पिछली नीति की तरह, इसका भी एक नाम है.
  • <Request वैरिएबल> - यह वह वैरिएबल है जिसे AssignmentsMessage नीति में बनाया गया था. यह बैकएंड एपीआई में जाने वाले अनुरोध को इकट्ठा करता है.
  • <Response> - यह एलिमेंट, उस वैरिएबल का नाम देता है जिसमें रिस्पॉन्स को सेव किया जाता है. जैसा कि आपको दिखेगा, इस वैरिएबल को बाद में ExtractVariables नीति से ऐक्सेस किया जाएगा.
  • <HTTPTargetConnection> - यह बैकएंड एपीआई के टारगेट यूआरएल के बारे में बताता है. इस मामले में, हम यह तय करते हैं कि एपीआई, JSON रिस्पॉन्स दिखाता है.

अब हमारे पास दो नीतियां हैं, एक जो बैकएंड एपीआई (Google का जियोकोडिंग एपीआई) को इस्तेमाल करने के लिए ज़रूरी अनुरोध की जानकारी तय करती है और दूसरी, जो असल में बैकएंड एपीआई को अनुरोध भेजती है. इसके बाद, हम दिए गए जवाब को हैंडल करेंगे.

रिस्पॉन्स को ExtractVariables की मदद से पार्स करें

ExtractVariables की नीति, सेवा कॉलआउट नीति से मिले रिस्पॉन्स मैसेज से कॉन्टेंट को पार्स करने का आसान तरीका देती है. ExtractVariables का इस्तेमाल, JSON या एक्सएमएल को पार्स करने के लिए किया जा सकता है. इसके अलावा, इसका इस्तेमाल यूआरआई पाथ, एचटीटीपी हेडर, क्वेरी पैरामीटर, और फ़ॉर्म पैरामीटर से कॉन्टेंट निकालने के लिए किया जा सकता है.

यहां ExtractVariables नीति की सूची दी गई है. इस नीति के बारे में ज़्यादा जानने के लिए, वैरिएबल एक्सट्रैक्ट करने से जुड़ी नीति में जाएं. डाउनलोड किए गए सैंपल में, आपको यह एक्सएमएल फ़ाइल doc-samples/policy-mashup-cookbook/apiproxy/policies/ParseGeocodingResponse.xml में मिल सकती है.

<ExtractVariables name="ParseGeocodingResponse">
  <Source>GeocodingResponse</Source>
  <VariablePrefix>geocoderesponse</VariablePrefix>
  <JSONPayload>
    <Variable name="latitude">
       <JSONPath>$.results[0].geometry.location.lat</JSONPath>
    </Variable>
    <Variable name="longitude">
       <JSONPath>$.results[0].geometry.location.lng</JSONPath>
    </Variable>
  </JSONPayload>
</ExtractVariables>

ExtractVariable नीति के मुख्य एलिमेंट ये हैं:

  • <ExtractVariables name> - जब किसी फ़्लो में नीति का इस्तेमाल किया जाता है, तब नीति के नाम को उसका रेफ़रंस देने के लिए इस्तेमाल किया जाता है.
  • <सोर्स> - इसकी मदद से, उस रिस्पॉन्स वैरिएबल की जानकारी मिलती है जिसे सर्विस कॉलआउट नीति में बनाया गया है. यह वह वैरिएबल है जिससे यह नीति डेटा इकट्ठा करती है.
  • <VariablePrefix> - वैरिएबल प्रीफ़िक्स इस नीति में बनाए गए दूसरे वैरिएबल के लिए एक नेमस्पेस तय करता है. Edge के पहले से तय वैरिएबल से तय किए गए रिज़र्व नामों को छोड़कर, प्रीफ़िक्स कोई भी नाम हो सकता है.
  • <JSONPayload> - यह एलिमेंट, हमारी पसंद के रिस्पॉन्स डेटा को शामिल करता है और इसे नाम वाले वैरिएबल में शामिल करता है. असल में, जियोकोडिंग एपीआई, अक्षांश और देशांतर की तुलना में ज़्यादा जानकारी देता है. हालांकि, इस सैंपल के लिए हमें सिर्फ़ इन वैल्यू की ज़रूरत है. एपीआई के दस्तावेज़ में, जियोकोडिंग एपीआई से मिले JSON की पूरी रेंडरिंग देखी जा सकती है. JSON ऑब्जेक्ट के दिए गए कई फ़ील्ड में से geo.location.lat और geo.location.lng की वैल्यू, सिर्फ़ दो हैं.

ऐसा हो सकता है कि यह साफ़ तौर पर न हो, लेकिन यह देखना ज़रूरी है कि ExtractVariables दो वैरिएबल बनाता है, जिनके नामों में वैरिएबल प्रीफ़िक्स (जियोरिस्पॉन्स) और नीति में बताए गए, वैरिएबल के असल नाम शामिल होते हैं. ये वैरिएबल, एपीआई प्रॉक्सी में सेव किए जाते हैं और प्रॉक्सी फ़्लो में अन्य नीतियों के लिए भी उपलब्ध होंगे, जैसा कि आपको दिखेगा. वैरिएबल इस तरह के होते हैं:

  • geocoderesponse.latitude
  • geocoderesponse.longitude

ज़्यादातर काम अब पूरा हो गया है. हमने तीन नीतियों का एक मिला-जुला रूप बनाया है जो एक अनुरोध बनाते हैं, बैकएंड एपीआई को कॉल करते हैं, और दिए गए JSON डेटा को पार्स करते हैं. आखिरी चरणों में, हम फ़्लो के इस हिस्से के डेटा को दूसरी AssignmentsMessage नीति में फ़ीड करेंगे और दूसरे बैकएंड एपीआई (Google Elevation API) का इस्तेमाल करेंगे. इसके बाद, हम अपना मैश किया गया डेटा ऐप्लिकेशन डेवलपर को देंगे.

AssignmentsMessage की मदद से दूसरा अनुरोध जनरेट करें

यहां दी गईassignMessage नीति, हमारे सेव किए गए पहले बैकएंड (Google जियोकोडिंग) से मिले वैरिएबल का इस्तेमाल करती है और उन्हें दूसरे एपीआई (Google एलिवेशन) के लिए तय किए गए अनुरोध में प्लग करती है. जैसा कि पहले बताया गया है, ये वैरिएबल जियोरिस्पॉन्स.अक्षांश और जियोकोड की प्रतिक्रिया.देशांतर हैं.

डाउनलोड किए गए सैंपल में, आपको यह एक्सएमएल फ़ाइल doc-samples/policy-mashup-cookbook/apiproxy/policies/AssignElevationParameters.xml में मिल सकती है.

<AssignMessage name="AssignElevationParameters">
<Remove>
    <QueryParams>
      <QueryParam name="country"/>
      <QueryParam name="postalcode"/>
    </QueryParams>
  </Remove>
  <Set>
    <QueryParams>
      <QueryParam name="locations">{geocoderesponse.latitude},{geocoderesponse.longitude}</QueryParam>
      <QueryParam name="sensor">false</QueryParam>
    </QueryParams>
  </Set>
</AssignMessage>

Google Elevation API की जांच करने पर, आपको पता चलेगा कि इसके लिए दो क्वेरी पैरामीटर इस्तेमाल किए जाते हैं. पहले को locations कहा जाता है और इसकी वैल्यू अक्षांश और देशांतर (कॉमा लगाकर अलग की गई वैल्यू) होती है. दूसरा पैरामीटर sensor है, जो ज़रूरी है और सही या गलत होना चाहिए. इस समय, ध्यान देने वाली सबसे ज़रूरी बात यह है कि हम यहां जो अनुरोध मैसेज तैयार करेंगे उसके लिए सेवा कॉलआउट की ज़रूरत नहीं है. फ़िलहाल, हमें Service कॉलआउट से दूसरे एपीआई को कॉल करने की ज़रूरत नहीं है, क्योंकि हम प्रॉक्सी के टारगेटएंडपॉइंट से बैकएंड एपीआई को कॉल कर सकते हैं. अगर आपको लगता है कि इस एपीआई को कॉल करना है, तो हमारे पास वह सारा डेटा मौजूद है जिसकी ज़रूरत हमें Google एलिवेशन एपीआई को कॉल करने के लिए होती है. इस चरण में जनरेट किए गए अनुरोध मैसेज के लिए सेवाकॉलआउट की ज़रूरत नहीं होती, क्योंकि मुख्य अनुरोध पाइपलाइन के लिए अनुरोध जनरेट किया जाता है. इसलिए, इसे एपीआई प्रॉक्सी के लिए कॉन्फ़िगर किए गए रूट रूल के बाद सिर्फ़ प्रॉक्सीएंडपॉइंट को टारगेट एंडपॉइंट पर भेजा जाएगा. टारगेटएंडपॉइंट, रिमोट एपीआई के साथ कनेक्शन को मैनेज करता है. (याद रखें कि एलिवेशन एपीआई का यूआरएल, TargetEndpoint के लिए HTTPConnection में तय किया गया है. एलिवेशन एपीआई दस्तावेज़ के बारे में ज़्यादा जानें. हमने पहले country और postalcode जैसे QueryParams को सेव किया था. अब इनकी ज़रूरत नहीं है. इसलिए, हम उन्हें यहां से हटा देते हैं.

कुछ समय के लिए ठहराव: फ़्लो पर वापस जाएं

इस समय, आपको शायद यह पता चल सकता है कि हम एक और सेवा कॉलआउट नीति क्यों नहीं बना रहे हैं. इन सबके बाद, हमने एक और मैसेज तैयार किया है. यह मैसेज टारगेट, Google एलिवेशन एपीआई पर कैसे भेजा जाता है? फ़्लो के <Route बटन> एलिमेंट में इसका जवाब दिया गया है. <RouteTerms> में तय किया गया है कि फ़्लो के <Request> हिस्से के लागू होने के बाद, बचे हुए अनुरोध मैसेज का क्या करना है. इस <RouteTerms> में तय किया गया TargetEndpoint, एपीआई प्रॉक्सी को http://maps.googleapis.com/maps/api/elevation/xml को मैसेज डिलीवर करने के लिए कहता है.

अगर आपने सैंपल एपीआई प्रॉक्सी को डाउनलोड किया है, तो आपको फ़ाइल doc-samples/policy-mashup-cookbook/apiproxy/targets/default.xml में Targetप्रॉक्सी एक्सएमएल मिल सकता है.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <!-- This is where we define the target. For this sample we just use a simple URL. -->
    <URL>http://maps.googleapis.com/maps/api/elevation/xml</URL>
  </HTTPTargetConnection>
</TargetEndpoint>

अब हमें सिर्फ़ Google Elevation API से मिले जवाब को प्रोसेस करना है और हम इसका काम कर चुके हैं.

रिस्पॉन्स को एक्सएमएल से JSON में बदलना

इस उदाहरण में, Google Elevation API से मिला रिस्पॉन्स, एक्सएमएल के तौर पर मिला है. "अतिरिक्त क्रेडिट" के लिए, आइए अपने कंपोज़िट में एक और नीति जोड़ें, ताकि रिस्पॉन्स को एक्सएमएल से JSON में बदला जा सके.

इस उदाहरण में, generateResponse नाम की JavaScript नीति का इस्तेमाल किया जाता है. इसमें, कन्वर्ज़न को पूरा करने के लिए, JavaScript कोड वाली रिसॉर्स फ़ाइल का इस्तेमाल किया जाता है. जनरेट की गई रिस्पॉन्स नीति की परिभाषा नीचे दी गई है:

<Javascript name="GenerateResponse" timeout="10000">
  <ResourceURL>jsc://GenerateResponse.js</ResourceURL>
</Javascript>

GeneResponse.js संसाधन फ़ाइल में, कन्वर्ज़न करने के लिए इस्तेमाल किया जाने वाला JavaScript शामिल होता है. यह कोड, doc-samples/policy-mashup-cookbook/apiproxy/resources/JSC/GenerateResponse.js फ़ाइल में देखा जा सकता है.

Apigee, एक्सएमएल को JSON में बदलने के लिए, एक आउट-ऑफ़-द-बॉक्स नीति, XMLToJSON भी उपलब्ध कराता है. इसके बजाय, यहां दी गई xmltojson नीति का इस्तेमाल करने के लिए, ProxyEndpoint में बदलाव किया जा सकता है.

<XMLToJSON name="xmltojson">
  <Options>
  </Options>
  <OutputVariable>response</OutputVariable>
  <Source>response</Source>
</XMLToJSON>

उदाहरण की जांच करना

अगर आपने अब तक ऐसा नहीं किया है, तो policy-mashup-cookbook सैंपल को डाउनलोड करने, डिप्लॉय करने, और चलाने की कोशिश करें. यह सैंपल, Apigee Edge के सैंपल रिपॉज़िटरी GitHub में मौजूद doc-samples फ़ोल्डर में देखा जा सकता है. बस policy-mashup-cookbook फ़ोल्डर में दी गई README फ़ाइल में दिए गए निर्देशों का पालन करें. इसके अलावा, यहां दिए गए छोटे निर्देशों का पालन करें: सैंपल एपीआई प्रॉक्सी का इस्तेमाल करना.

खास जानकारी देने के लिए, कंपोज़िट एपीआई को इस तरह से कॉल किया जा सकता है. अपने {myorg} को अपने संगठन के नाम से बदलें:

$ curl "http://{myorg}-test.apigee.net/policy-mashup-cookbook?country=us&postalcode=08008"

जवाब में, ऐप्लिकेशन के असली उपयोगकर्ता की ओर से दिए गए पिन कोड के बीच में, जियोकोड की गई जगह की जानकारी शामिल होती है. साथ ही, उस जगह की जियोकोड की गई ऊंचाई से जुड़ी जानकारी भी शामिल होती है. यह डेटा, दो बैकएंड एपीआई से वापस लाया गया. साथ ही, एपीआई प्रॉक्सी के साथ जुड़ी नीतियों के साथ मैश-अप किया गया और एक ही जवाब में क्लाइंट को वापस भेजा गया.

{  
   "country":"us",
   "postalcode":"08008",
   "elevation":{  
      "meters":0.5045232,
      "feet":1.6552599030345978
   },
   "location":{  
      "latitude":39.75007129999999,
      "longitude":-74.1357407
   }
}

खास जानकारी

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