คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ข้อความเสริมของ Java คืออะไร
Apigee Edge มีนโยบายที่หลากหลายซึ่งสอดคล้องกับข้อกำหนดการจัดการ API ทั่วไป เช่น ความปลอดภัย การเปลี่ยนรูปแบบข้อมูล การจัดการการรับส่งข้อมูล และอื่นๆ
อย่างไรก็ตาม มีบางกรณีที่ API ของคุณต้องใช้ลักษณะการทำงานที่กำหนดเองซึ่งไม่ได้นำไปใช้ในนโยบายมาตรฐาน ในกรณีเหล่านี้ Apigee จะมีตัวเลือกมากมายที่ช่วยให้คุณเขียนสคริปต์หรือเขียนโค้ดลักษณะการทำงานของ API ที่กำหนดเองได้ แนวทางหนึ่งคือการนำลักษณะการทำงานที่ต้องการไปใช้ใน Java
ดูเวอร์ชันที่รองรับของ Java ได้ที่ซอฟต์แวร์ที่รองรับและเวอร์ชันที่รองรับ
ฉันจะใช้รหัส Java ในพร็อกซีได้อย่างไร
นโยบายไฮไลต์ของ Java ช่วยให้คุณเรียกใช้โค้ด Java จากภายในโฟลว์พร็อกซีที่กำลังดำเนินการอยู่ โค้ด Java ต้องใช้อินเทอร์เฟซ Java เฉพาะ Edge บางรายการที่อนุญาตให้โค้ดโต้ตอบกับพร็อกซีที่ดำเนินการได้ เช่น เมธอดของ Java มีไว้สำหรับการรับและตั้งค่าส่วนหัว พารามิเตอร์การค้นหา ตัวแปรโฟลว์ และเอนทิตีอื่นๆ ภายในบริบทโฟลว์ปัจจุบันของพร็อกซี
ฉันควรใช้ไฮไลต์ Java เมื่อใด
มาดูสถานการณ์ที่ข้อความเสริมของ Java มีประโยชน์และสถานการณ์ที่คุณควรพิจารณาวิธีอื่นๆ กัน
ก่อนอื่นให้ลองพิจารณาวิธีอื่นๆ
ก่อนใช้ไฮไลต์ Java โปรดทราบว่าอาจมีวิธีอื่นๆ ที่คุณใช้แทนได้ เช่น
- สำหรับการดำเนินการขนาดเล็ก เช่น การเรียก HTTP API ไปยังบริการระยะไกล ให้ลองใช้นโยบาย ServiceAPI ดูนโยบายคำขอราคาเสนอบริการ
- คุณสามารถใช้ภาษา JavaScript หรือ Python สำหรับการโต้ตอบที่ค่อนข้างเรียบง่ายกับเนื้อหาข้อความ เช่น การแก้ไขหรือการแยกส่วนหัว พารามิเตอร์ หรือเนื้อหาของข้อความ HTTP
สิ่งที่คุณทำได้ในโค้ด Java
ไฮไลต์ของ Java รองรับการดำเนินการพื้นฐานต่อไปนี้
- การตรวจสอบหรือการควบคุมข้อความคำขอหรือข้อความตอบกลับ
- การรับและการตั้งค่าตัวแปรโฟลว์ คุณใช้เมธอดของ Java เพื่อเข้าถึงตัวแปรโฟลว์ Edge ได้ หากต้องการเข้าถึงข้อมูลแมปค่าคีย์ (KVM) ให้ใช้นโยบาย KVM กำหนดค่า KVM ให้กับตัวแปรโฟลว์ จากนั้นคุณจะเข้าถึงตัวแปรโฟลว์จากภายในคำขอราคาเสนอ Java ได้
- การเรียกใช้บริการภายนอก
- การเพิ่มข้อผิดพลาด
- การจัดการข้อความแสดงข้อผิดพลาดและรหัสสถานะ
สิ่งที่คุณทำได้ในโค้ด Java
การเรียกระบบส่วนใหญ่ไม่ได้รับอนุญาต คุณไม่สามารถทำสิ่งต่อไปนี้ได้
- ทำให้ระบบไฟล์ภายในอ่านหรือเขียน ซึ่งหมายความว่าคุณจะใช้แพ็กเกจ Java เพื่ออ่าน/เขียนในระบบไฟล์ภายในไม่ได้ แต่จะเรียกใช้ภายนอกจากระยะไกลได้
- รับข้อมูลเกี่ยวกับกระบวนการปัจจุบัน รายการกระบวนการ หรือการใช้งาน CPU/หน่วยความจำในเครื่อง
- เข้าถึงซอร์สโค้ดใน "expressions-1.0.0.jar" และ "message-flow-1.0.0.jar"
แม้ว่าบางการเรียกอาจได้ผล แต่ก็ไม่ได้รับการสนับสนุนและความรับผิดที่จะถูกปิดใช้งานไว้ตลอดเวลา หลีกเลี่ยงการทำการเรียกดังกล่าวในรหัสของคุณ
โปรดอย่าใช้หรืออาศัยไลบรารี Java ที่รวมอยู่ใน Apigee Edge ไลบรารีเหล่านี้มีไว้สําหรับฟังก์ชันการทํางานของผลิตภัณฑ์ Edge เท่านั้น และไม่รับประกันว่าไลบรารีจะพร้อมใช้งานตั้งแต่รุ่นสู่รุ่น หากคุณใช้ไลบรารีดังกล่าว ให้ใช้ไลบรารีดังกล่าวในการสาธิตที่ไม่ได้ใช้งานเท่านั้น
ข้อความไฮไลต์ Hello Java
มาดูกันที่ตัวอย่างข้อความเสริม Hello World แบบพื้นฐาน ในตัวอย่างนี้ เราสร้างพร็อกซีแบบง่ายที่มีข้อความไฮไลต์ Java ที่ตอบกลับเป็น "hello world" พร็อกซีจะแสดงคำตอบที่เป็นไปได้ 1 ใน 2 คำตอบต่อไปนี้
- หากคุณส่งส่วนหัว "username" ด้วยค่า "name" พร็อกซีจะแสดงผลดังนี้
Hello, <name>!
- หากคุณไม่ใส่ส่วนหัว พร็อกซีจะแสดงเพียงค่าต่อไปนี้
"Hello, Guest!"
ดาวน์โหลดโปรเจ็กต์เริ่มต้น
เรามีโปรเจ็กต์พื้นฐานที่เตรียมไว้ให้คุณใน GitHub ในที่เก็บ api-platform-samples ของ Apigee เพื่อความสะดวก
- ดาวน์โหลดหรือโคลน api-platform-samples ลงในระบบ
- ในเทอร์มินัลหรือตัวแก้ไขโค้ดที่ต้องการ ให้ไปที่โปรเจ็กต์
api-platform-samples/doc-samples/java-hello
เขียนโค้ด Java
- เปิดไฟล์ซอร์สของ Java:
java-hello/callout/src/main/java/HelloJava.java
ไฟล์นี้เป็นเวอร์ชันโครงกระดูกของคลาส Java หลักที่เราจะนำมาใช้ ต้องระบุแพ็กเกจที่นำเข้าสำหรับโค้ดไฮไลต์ Edge Java คลาสเหล่านี้มอบเมธอดที่ช่วยให้คุณเข้าถึงบริบทการดำเนินการของพร็อกซีได้ เราจะแนะนำขั้นตอนในการคอมไพล์และทำให้โค้ดนี้ใช้งานได้ในเร็วๆ นี้
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; public class HelloJava implements Execution { public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { // Your code here. return ExecutionResult.SUCCESS; } catch (Exception e) { return ExecutionResult.ABORT; } } }
- แทนที่บรรทัด
// Your code here
ที่แสดงความคิดเห็นด้วยโค้ดต่อไปนี้
String name = messageContext.getMessage().getHeader("username"); if (name != null && name.length()>0) { messageContext.getMessage().setContent("Hello, " + name + "!"); messageContext.getMessage().removeHeader("username"); } else { messageContext.getMessage().setContent("Hello, Guest!"); }
- บันทึกไฟล์
คอมไพล์โค้ดด้วย Maven
โปรเจ็กต์สร้างขึ้นเพื่อให้คุณคอมไพล์ด้วย Maven ได้ หากต้องการใช้ javac
เราจะใส่ตัวอย่างต่อไปนี้ตามตัวอย่าง Maven
- ตรวจสอบว่าได้ติดตั้ง Maven แล้ว
mvn -version
- เรียกใช้สคริปต์
java-hello/buildsetup.sh
สคริปต์นี้จะติดตั้งทรัพยากร Dependency ของ JAR ที่จำเป็นในที่เก็บ Maven ในเครื่อง - cd ลงในไดเรกทอรี
java-hello/callout
- ดำเนินการ Maven:
mvn clean package
- หากต้องการ โปรดยืนยันว่าได้คัดลอกไฟล์ JAR
edge-custom-policy-java-hello.jar
ไปยังjava-hello/apiproxy/resources/java
แล้ว ตำแหน่งนี้เป็นตำแหน่งที่จำเป็นสำหรับไฟล์ JAR ที่คุณต้องการทำให้ใช้งานได้กับพร็อกซี
คอมไพล์ด้วย javac (ไม่บังคับ)
ในส่วนก่อนหน้านี้ คุณจะต้องสร้างไฟล์ Java JAR ที่จำเป็นโดยอัตโนมัติด้วยคำสั่ง Maven หากต้องการใช้ javac
เพื่อคอมไพล์โค้ด คุณจะดำเนินการที่คล้ายกับตัวอย่างต่อไปนี้ได้ (จากไดเรกทอรี java-hello
) ระบบได้จัดเตรียมไฟล์ JAR ที่จำเป็นให้คุณในไดเรกทอรี java-hello/lib
- cd เป็น
api-platform-samples/doc-samples/java-hello
- ตรวจสอบว่ามี Javac ในเส้นทางของคุณแล้ว
javac -version
- เรียกใช้คำสั่ง javac ต่อไปนี้
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/HelloJava.java
การดำเนินการนี้จะสร้างcom/apigeesample/HelloJava.class
- สร้างไฟล์ JAR ที่มีคลาสที่คอมไพล์แล้วในไดเรกทอรี
apiproxy/resources/java
ตำแหน่งนี้เป็นตำแหน่งที่จำเป็นสำหรับไฟล์ JAR ที่คุณต้องการทำให้ใช้งานได้กับพร็อกซี โดยเรียกใช้คำสั่งต่อไปนี้ในไดเรกทอรีjava-hello
(อย่าลืมใส่จุดต่อท้าย)
jar cvf apiproxy/resources/java/edge-custom-policy-java-hello.jar -C com .
ทำให้พร็อกซีใช้งานได้และเรียกใช้พร็อกซี
สคริปต์สำหรับทำให้ใช้งานได้มีให้ในไดเรกทอรี ./java-hello
แต่ก่อนที่จะเรียกใช้ คุณต้องการตั้งค่าด่วนก่อน
- cd เป็น
api-platform-samples/doc-samples/java-hello
- หากยังไม่ได้ดำเนินการ ให้เปิดไฟล์
../../setup/setenv.sh
แล้วแก้ไขไฟล์ตามที่ระบุด้วยข้อมูลบัญชี Apigee ได้แก่ ชื่อผู้ใช้ของคุณ (อีเมลที่เชื่อมโยงกับบัญชี) ชื่อองค์กร และโดเมนที่ใช้เรียกการจัดการ API เช่น โดเมนสำหรับ Edge Cloud คือhttps://api.enterprise.apigee.com
แต่โดเมนอาจแตกต่างออกไปหากคุณใช้ Edge Private Cloud - บันทึกไฟล์
setenv.sh
- ดำเนินการเรียกใช้สคริปต์:
./deploy.sh
- หากการทำให้ใช้งานได้สำเร็จ ให้เรียกใช้สคริปต์เรียกใช้ดังนี้
./invoke.sh
สคริปต์เรียกใช้จะเรียกใช้คำสั่ง cURL ที่มีลักษณะเช่นนี้
curl http://$org-$env.$api_domain/java-hello -H "username:Will"
ซึ่งจะแสดงข้อความ "Hey, Will!
คุณแก้ไขสคริปต์
invoke.sh
เพื่อเปลี่ยนชื่อได้ หรือหากเปลี่ยนการเรียก cURL เพื่อนำส่วนหัวออก คำสั่งจะแสดงขึ้นมาว่า "สวัสดี ผู้มาเยือน"
เกี่ยวกับพร็อกซี
เรามาตรวจสอบนโยบายที่ใช้ในพร็อกซีนี้กัน โปรดคำนึงถึงตำแหน่งของนโยบายในขั้นตอนการทำงานของพร็อกซีและเหตุผล
นโยบายการมอบหมายข้อความ
นโยบาย "กำหนดข้อความ" จะแนบอยู่กับกระบวนการส่งคำขอของ ProxyEndpoint โดยจะคัดลอกส่วนหัวของชื่อผู้ใช้จากคำขอและมอบหมายให้กับการตอบกลับ การดำเนินการนี้ช่วยให้นโยบายการเรียก Java ซึ่งแนบอยู่กับขั้นตอนการตอบสนองสามารถเข้าถึงส่วนหัวของชื่อผู้ใช้และสร้างเนื้อหาการตอบกลับที่กำหนดเองโดยใช้ค่าของส่วนหัวนั้น
<AssignMessage async="false" continueOnError="false" enabled="true" name="CopyHeader"> <DisplayName>CopyHeader</DisplayName> <Copy source="request"> <Headers> <Header name="username"/> </Headers> </Copy> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
นโยบายข้อความไฮไลต์ Java
นโยบายข้อความเสริมของ Java จะแนบอยู่กับขั้นตอนการตอบกลับ เนื่องจากโค้ด Java ที่กําหนดเองทําการเปลี่ยนแปลงส่วนหัวและข้อความตอบกลับ องค์ประกอบ ClassName ของนโยบายจะระบุคลาสหลักที่นโยบายดำเนินการ องค์ประกอบ ResourceURL คือชื่อไฟล์ JAR ที่คุณสร้างและเพิ่มลงในไดเรกทอรี resources/java
ของพร็อกซี
<JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://edge-custom-policy-java-hello.jar</ResourceURL> </JavaCallout>
สิ่งที่คุณต้องทราบเกี่ยวกับข้อความเสริมของ Java
สิ่งสำคัญที่ควรทราบเกี่ยวกับการใช้ข้อความเสริม Java มีดังนี้
- นำเข้าชั้นเรียนจากแพ็กเกจ
com.apigee.flow.execution
และcom.apigee.flow.message
แพ็กเกจเหล่านี้ต้องรวมอยู่ในไฟล์ JAR ที่มีการทำแพ็กเกจและทำให้ใช้งานได้ คุณจะอัปโหลด Java JAR ผ่านเครื่องมือแก้ไขพร็อกซี UI การจัดการ หรือรวมไว้ในไดเรกทอรี/resources/java
ในพร็อกซี API ที่คุณพัฒนาในเครื่องก็ได้ - ใช้อินเทอร์เฟซการดำเนินการ โค้ด Java ที่ดำเนินการภายในพร็อกซี API ต้องใช้การดำเนินการ
- นโยบายไฮไลต์ของ Java ไม่มีโค้ดจริง แต่นโยบายคำขอราคาเสนอ Java จะอ้างอิง "ทรัพยากร" ของ Java ซึ่งต้องแพ็กเกจใน JAR
- ชื่อแพ็กเกจที่ควรหลีกเลี่ยง: อย่าใช้ io.apigee หรือ com.apigee เป็นชื่อแพ็กเกจในข้อความไฮไลต์ของ Java มีการจองและใช้โดยโมดูล Apigee อื่นๆ
- หากไฮไลต์ของ Java ใช้ไลบรารีของบุคคลที่สามเพิ่มเติมซึ่งจัดแพ็กเกจเป็นไฟล์ JAR อิสระไว้ ให้วางไฟล์ JAR เหล่านั้นในไดเรกทอรี
/resources/java
ด้วยเพื่อให้แน่ใจว่าไฟล์เหล่านั้นโหลดอย่างถูกต้องที่รันไทม์ - หากมี JAR หลายรายการ ให้เพิ่ม JAR เหล่านั้นเป็นทรัพยากรเพิ่มเติม คุณไม่จำเป็นต้องแก้ไขการกำหนดค่านโยบายเพื่ออ้างอิงไฟล์ JAR เพิ่มเติม ใส่ชื่อไว้ใน
/resources/java
ก็เพียงพอแล้ว - ดูข้อมูลเพิ่มเติมเกี่ยวกับการอัปโหลด Java JAR ได้ที่ไฟล์ทรัพยากร