जवाब को Java कॉलआउट की मदद से अपरकेस में बदलें

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

अगर आप पहली बार Java कॉलआउट आज़मा रहे हैं, तो हमारी सलाह है कि आप Java कॉलआउट.

कुकबुक के इस सैंपल में, Javaकॉलआउट नीति बनाने का तरीका बताया गया है. यह नीति लागू होने पर, प्रॉक्सी फ़्लो के संदर्भ में कस्टम Java कोड.

सैंपल कोड क्या करता है?

इस सैंपल में मौजूद एपीआई प्रॉक्सी, ऐसी टारगेट सेवा को कॉल करता है जो JSON का सामान्य रिस्पॉन्स देती है. कॉन्टेंट बनाने Java कॉलआउट नीति को टारगेट रिस्पॉन्स फ़्लो पर रखा जाता है. Java कोड, हेडर को कन्वर्ट करता है और अंग्रेज़ी के बड़े अक्षरों के जवाब का कॉन्टेंट. यह आसान उदाहरण है; हालांकि, इसमें दिखाया गया है कि का इस्तेमाल करें.

सैंपल आज़माएं

प्रोजेक्ट डाउनलोड करें

चीज़ों को आसान बनाने के लिए, इस प्रोजेक्ट को Apigee api-platform-samples रिपॉज़िटरी से डाउनलोड किया जा सकता है GitHub.

  1. अपने सिस्टम में api-platform-samples डाउनलोड करें या उन्हें क्लोन करें.
  2. अपनी पसंद के टर्मिनल या कोड एडिटर में, api-platform-samples/doc-samples/java-cookbook प्रोजेक्ट.

Maven की मदद से अपना कोड कंपाइल करना

प्रोजेक्ट को सेट अप किया गया है, ताकि उसे Maven के साथ कंपाइल किया जा सके. अगर आपको डिजिटल विज्ञापन दिखाने javac, हम Maven के उदाहरण के साथ एक उदाहरण शामिल करेंगे.

  1. पक्का करें कि आपने Maven इंस्टॉल किया हो:
    mvn -version
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  2. java-cookbook/buildsetup.sh स्क्रिप्ट चलाएं. यह स्क्रिप्ट आपके लोकल Maven रिपो में ज़रूरी JAR डिपेंडेंसी.
  3. cd को java-cookbool/callout डायरेक्ट्री में जोड़ें.
  4. Maven लागू करें:
    mvn clean package
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  5. अगर आप चाहें, तो पुष्टि करें कि JAR फ़ाइल edge-custom-policy-java-cookbook.jar java-cookbook/apiproxy/resources/java में कॉपी किया गया. इसके लिए यह ज़रूरी जगह है JAR फ़ाइलें, जिन्हें आपको प्रॉक्सी के साथ डिप्लॉय करना है.

javac के साथ कंपाइल करें

अगर आपको कोड को कंपाइल करने के लिए javac का इस्तेमाल करना है, तो ऐसा ही कुछ करें (java-cookbook डायरेक्ट्री से) फ़ॉलो किया जा रहा है. ज़रूरी JAR फ़ाइलें दी गई हैं आपके लिए java-cookbook/lib डायरेक्ट्री में.

  1. cd से api-platform-samples/doc-samples/java-cookbook करने के लिए.
  2. पक्का करें कि आपके पाथ में javac हो.

    javac -version
    
  3. यह javac निर्देश चलाएं:

    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
    
  4. JAR फ़ाइल को apiप्रॉक्सी/resources/java डायरेक्ट्री में कॉपी करें. यह ज़रूरी जगह है जिन्हें आप प्रॉक्सी के साथ डिप्लॉय करना चाहते हैं.

    cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
    

प्रॉक्सी को डिप्लॉय करें और उसे कॉल करें

./java-cookbook डायरेक्ट्री में डिप्लॉय स्क्रिप्ट दी गई है. हालाँकि, दौड़ने से पहले तो आपको एक क्विक सेटअप करना होगा.

  1. cd से api-platform-samples/doc-samples/java-cookbook
  2. अगर आपने पहले से ऐसा नहीं किया है, तो ../../setup/setenv.sh फ़ाइल खोलें और बदलाव करें जैसा कि आपके Apigee खाते की जानकारी में बताया गया है: आपका उपयोगकर्ता नाम (ईमेल पता आपके खाते से जुड़ा हो सकता है), आपके संगठन का नाम, और वह डोमेन जिसका इस्तेमाल एपीआई बनाने के लिए किया जाता है कॉल को मैनेज करने के लिए किया जा सकता है. उदाहरण के लिए, Edge क्लाउड के लिए, डोमेन https://api.enterprise.apigee.com; हालाँकि, डोमेन अलग हो सकता है अगर आप Edge Private Cloud का इस्तेमाल करें.
  3. setenv.sh फ़ाइल सेव करें.
  4. डिप्लॉय स्क्रिप्ट चलाएं:
    ./deploy.sh
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  5. डिप्लॉयमेंट पूरा होने पर, शुरू करने की स्क्रिप्ट लागू करें:
    ./invoke.sh
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

    शुरू करने वाली स्क्रिप्ट एक cURL निर्देश को कॉल करती है, जो ऐसा दिखता है:

    curl  http://$org-$env.$api_domain/java-cookbook/json
    

जवाब कुछ ऐसा दिखता है:

< HTTP/1.1 200 OK
< Date: Tue, 09 May 2017 20:31:08 GMT
< Content-Type: APPLICATION/JSON; CHARSET=UTF-8
< Content-Length: 68
< Connection: keep-alive
< Access-Control-Allow-Origin: *
< ETag: W/"44-RA5ERT/MMLIK54NVBWBSZG"
< X-Powered-By: APIGEE
< Server: Apigee Router
<
* Curl_http_done: called premature == 0
* Connection #0 to host willwitman-test.apigee.net left intact
{"FIRSTNAME":"JOHN","LASTNAME":"DOE","CITY":"SAN JOSE","STATE":"CA"}

प्रॉक्सी फ़्लो

यह ट्रेस करने वाले टूल का एक शॉट है, जो प्रॉक्सी का फ़्लो दिखाता है:

प्रॉक्सी स्ट्रक्चर

यह प्रॉक्सी का स्ट्रक्चर है. ध्यान दें कि इसमें एक JAR फ़ाइल शामिल होती है, जो apiproxy/resources/java डायरेक्ट्री. JAR डालना ज़रूरी है. हम इसे नमूना, लेकिन अगर आप कस्टम काम कर रहे हैं, तो आपको इसे खुद बनाना होगा और स्थान. Java कॉलआउट को कंपाइल और डिप्लॉय करने के बारे में दिशा-निर्देश पाने के लिए, Java फ़ॉर्मैट बनाने का तरीका देखें कॉलआउट.

java-cookbook

    apiproxy
        java-cookbook.xml
    policies
        responseUppercase.xml
    proxies
        default.xml
    resources
        java
            ResponseUppercase.jar
    targets
        default.xml

Java कोड के बारे में जानकारी

Java कॉलआउट नीति नीचे दिए गए Java कोड को चलाती है, जो रिस्पॉन्स हेडर को कन्वर्ट करता है और जवाब के मुख्य हिस्से को अंग्रेज़ी के बड़े अक्षरों में बदलें. ध्यान दें कि यह प्रोग्राम, Apigee के खास पैकेज का इस्तेमाल करता है. ये पैकेज ऐसे ऑब्जेक्ट और तरीके उपलब्ध कराएं जिनका इस्तेमाल करके, सीधे प्रॉक्सी फ़्लो के साथ इंटरैक्ट किया जा सके. तरीके हैं, जो आपको फ़्लो वैरिएबल, हेडर, मैसेज कॉन्टेंट वगैरह पाने और सेट करने देते हैं.

package com.apigeesample;

import com.apigee.flow.execution.ExecutionContext;
import com.apigee.flow.execution.ExecutionResult;
import com.apigee.flow.execution.spi.Execution;
import com.apigee.flow.message.MessageContext;

import java.util.Set; 

public class ResponseUppercase implements Execution{
    public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
        try {
            Set headers = messageContext.getMessage().getHeaderNames();
            for (String header : headers) {
                String h = messageContext.getMessage().getHeader(header).toUpperCase();
                messageContext.getMessage().setHeader(header, h);
            }
            String content = messageContext.getMessage().getContent();
            messageContext.getMessage().setContent(content.toUpperCase());
            return ExecutionResult.SUCCESS;
        } catch (Exception e) {
                return ExecutionResult.ABORT;
        }
    }
}

सैंपल प्रॉक्सी की जाँच करें

प्रॉक्सी को खोलने और फ़ाइलों की जांच करने के लिए, हम इसे आप पर छोड़ देते हैं. यह Java की कॉलआउट नीति है. ध्यान दें कि यह कॉलआउट में एक्ज़ीक्यूट होने वाली क्लास और JAR फ़ाइल का रेफ़रंस कैसे देता है. सभी Java कॉलआउट नीतियां इस पैटर्न को फ़ॉलो करती हैं. Java कॉलआउट नीति भी देखें.

<JavaCallout name="responseUppercase">         
    <ClassName>com.apigeesample.ResponseUppercase</ClassName>         
    <ResourceURL>java://ResponseUppercase.jar</ResourceURL> 
</JavaCallout>