המרת התשובה לאותיות רישיות באמצעות הסבר של Java

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

אם אתם מנסים את ההסבר הראשון על Java, מומלץ להתחיל עם המאמר איך יוצרים Java יתרונות מרכזיים.

הדוגמה הזו מספר המתכונים מדגימה איך ליצור מדיניות JavaCallout פשוטה שמפעילה קוד Java מותאם אישית בהקשר של זרימה בשרת proxy.

.

מה עושה הקוד לדוגמה?

ה-Proxy ל-API בדוגמה הזו קורא לשירות יעד שמחזיר תגובת JSON פשוטה. המדיניות בנושא יתרונות מרכזיים של Java ממוקמת בתהליך היעד לתגובה. קוד Java ממיר את הכותרות תוכן של התגובה לאותיות רישיות. זוהי דוגמה פשוטה; עם זאת, הוא ממחיש כדי שקוד Java מותאם אישית יפעל בהקשר של API Proxy ב-Edge.

רוצה לנסות את הדוגמה?

הורדת הפרויקט

כדי לפשט את התהליך, אפשר להוריד את הפרויקט ממאגר api-platform-samples ב-Apigee 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. הסקריפט מתקין את יחסי התלות הנדרשים של JAR במאגר Maven.
  3. cd לספרייה java-cookbool/callout.
  4. מפעילים את Maven:
    mvn clean package
    
  5. ניתן לוודא שקובץ ה-JAR edge-custom-policy-java-cookbook.jar הועתק אל java-cookbook/apiproxy/resources/java. זה המיקום הנדרש עבור קובצי JAR שרוצים לפרוס באמצעות שרת proxy.

הידור באמצעות Javac

אם רוצים להשתמש ב-javac כדי להדר את הקוד, אפשר לבצע פעולה דומה לזו הבא (מהספרייה java-cookbook). קובצי ה-JAR הנדרשים סופקו בשבילך בספרייה java-cookbook/lib.

  1. c לapi-platform-samples/doc-samples/java-cookbook.
  2. חשוב לוודא שהנתיב Javac (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 לספריית apiproxy/resources/Java. זה המיקום הנדרש של קובצי JAR שרוצים לפרוס באמצעות שרת proxy.

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

פריסה וקריאה לשרת ה-proxy

סקריפט לפריסה מסופק בספרייה ./java-cookbook. אבל לפני שתתחילו תצטרכו לבצע הגדרה מהירה.

  1. cd ל-api-platform-samples/doc-samples/java-cookbook
  2. אם עדיין לא עשית זאת, עליך לפתוח את הקובץ ../../setup/setenv.sh ולערוך אותו כפי שמצוין בפרטי חשבון Apigee שלך: שם המשתמש שלך (כתובת האימייל) שמשויך לחשבון שלך), שם הארגון והדומיין שמשמש אותך ליצירת API שיחות ניהול. לדוגמה, בענן של Edge, הדומיין הוא https://api.enterprise.apigee.com; אבל הדומיין שלכם עשוי להיות שונה באמצעות ענן פרטי של Edge.
  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"}

תהליך עבודה בשרת proxy

זהו צילום של כלי המעקב שמראה את הזרימה של שרת ה-proxy:

מבנה שרת ה-proxy

זה המבנה של שרת ה-proxy. שימו לב שהוא כולל קובץ 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. החבילות האלה מספקים אובייקטים ושיטות שניתן להשתמש בהם כדי לקיים אינטראקציה ישירה עם הזרימה בשרת ה-proxy. שיטות כדי לקבל ולהגדיר משתני זרימה, כותרות, תוכן של הודעות ועוד.

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;
        }
    }
}

בדיקת שרת ה-proxy לדוגמה

אנחנו משאירים לך את האפשרות לפתוח את שרת ה-proxy ולבדוק את הקבצים. זוהי המדיניות בנושא יתרונות מרכזיים של Java. שימו לב איך הוא מפנה למחלקה שמפעילה נכס היתרונות המרכזיים ולקובץ ה-JAR. כל היתרונות המרכזיים של Java כללי מדיניות אלה תואמים לדפוס הזה. כדאי לעיין גם במדיניות בנושא יתרונות מרכזיים של Java.

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