แปลงการตอบกลับเป็นตัวพิมพ์ใหญ่ด้วยข้อความไฮไลต์ Java

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

หากลองใช้ Java Callout เป็นครั้งแรก เราขอแนะนำให้เริ่มต้นด้วยหัวข้อ วิธีสร้าง Java Callout

ตัวอย่าง Cookbook นี้แสดงวิธีสร้างนโยบาย JavaCallout อย่างง่ายที่เรียกใช้ โค้ด Java ที่กำหนดเองในบริบทของโฟลว์พร็อกซี

โค้ดตัวอย่างทำอะไร

พร็อกซี API ในตัวอย่างนี้เรียกใช้บริการเป้าหมายที่แสดงการตอบกลับ JSON อย่างง่าย นโยบาย Java Callout จะอยู่ในโฟลว์การตอบกลับเป้าหมาย โค้ด Java จะแปลงส่วนหัวและ เนื้อหาของการตอบกลับเป็นตัวพิมพ์ใหญ่ ตัวอย่างนี้เป็นตัวอย่างง่ายๆ แต่แสดงให้เห็นวิธี ทำให้โค้ด Java ที่กำหนดเองทำงานในบริบทของพร็อกซี API บน 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. เปลี่ยนไดเรกทอรีเป็น 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. เปลี่ยนไดเรกทอรีเป็น 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 ไปยังไดเรกทอรี apiproxy/resources/java ซึ่งเป็นตำแหน่งที่จำเป็น สำหรับไฟล์ JAR ที่คุณต้องการติดตั้งใช้งานกับพร็อกซี

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

ติดตั้งใช้งานและเรียกใช้พร็อกซี

เราได้จัดเตรียมสคริปต์การติดตั้งใช้งานไว้ในไดเรกทอรี ./java-cookbook แต่ก่อนที่จะเรียกใช้ คุณต้องทำการตั้งค่าอย่างรวดเร็ว

  1. เปลี่ยนไดเรกทอรีเป็น api-platform-samples/doc-samples/java-cookbook
  2. หากยังไม่ได้ดำเนินการ ให้เปิดไฟล์ ../../setup/setenv.sh แล้วแก้ไข ตามที่ระบุด้วยข้อมูลบัญชี Apigee ของคุณ ได้แก่ ชื่อผู้ใช้ (อีเมลที่เชื่อมโยงกับบัญชี) ชื่อองค์กร และโดเมนที่คุณใช้เพื่อทำการเรียกการจัดการ API เช่น สำหรับระบบคลาวด์ 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 ไดเรกทอรี ซึ่งเป็นไฟล์ที่จำเป็น เราได้จัดเตรียมไฟล์นี้ไว้ให้สำหรับตัวอย่าง แต่หากคุณกำลังทำงานที่กำหนดเอง คุณจะต้องสร้างไฟล์นี้ด้วยตนเองและคัดลอกไปยังตำแหน่งนี้ ดูคำแนะนำเกี่ยวกับการคอมไพล์และการติดตั้งใช้งาน Java Callout ได้ที่หัวข้อวิธีสร้าง Java Callout

java-cookbook

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

เกี่ยวกับโค้ด Java

นโยบาย Java Callout จะเรียกใช้โค้ด 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 Callout โปรดสังเกตวิธีที่นโยบายนี้อ้างอิงคลาสที่ Callout เรียกใช้และไฟล์ JAR นโยบาย Java Callout ทั้งหมดมีรูปแบบนี้ ดูนโยบาย Java Callout ด้วย

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