คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
Edge ช่วยให้คุณเรียกใช้พร็อกซี API หนึ่งจากพร็อกซี API อื่นได้ ฟีเจอร์นี้มีประโยชน์อย่างยิ่งหากคุณมีพร็อกซี API ที่มีโค้ดที่นำกลับมาใช้ใหม่ได้ซึ่งพร็อกซี API อื่นๆ สามารถใช้ได้
รูปแบบที่ไม่แนะนำ
การเรียกใช้พร็อกซี API หนึ่งจากพร็อกซี API อื่นโดยใช้ HTTPTargetConnection ในปลายทางเป้าหมายหรือโค้ด JavaScript ที่กำหนดเองจะทำให้เกิดการข้ามเครือข่ายเพิ่มเติม
เรียกใช้พร็อกซี 2 จากพร็อกซี 1 โดยใช้ HTTPTargetConnection
ตัวอย่างโค้ดต่อไปนี้เรียกใช้พร็อกซี 2 จากพร็อกซี 1 โดยใช้ HTTPTargetConnection
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>http://myorg-test.apigee.net/proxy2</URL> </HTTPTargetConnection>
เรียกใช้พร็อกซี 2 จากพร็อกซี 1 จากโค้ด JavaScript
ตัวอย่างโค้ดถัดไปเรียกใช้พร็อกซี 2 จากพร็อกซี 1 โดยใช้ JavaScript
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('http://myorg-test.apigee.net/proxy2); response.waitForComplete();
โฟลว์ของรหัส
หากต้องการทำความเข้าใจว่าเหตุใดวิธีนี้จึงมีข้อเสียโดยธรรมชาติ เราต้องทำความเข้าใจเส้นทางที่คำขอใช้ตามที่แสดงในแผนภาพด้านล่าง
ตามที่แสดงในแผนภาพ คำขอจะข้ามผ่านคอมโพเนนต์แบบกระจายหลายรายการ ซึ่งรวมถึงเราเตอร์และ Message Processor
ในโค้ดตัวอย่างด้านบน การเรียกใช้พร็อกซี 2 จากพร็อกซี 1 หมายความว่าคำขอต้องกำหนดเส้นทางผ่านเส้นทางแบบเดิม (เช่น เราเตอร์ > MP) ในรันไทม์ ซึ่งจะคล้ายกับการเรียกใช้ API จากไคลเอ็นต์ ซึ่งทำให้เกิดการข้ามเครือข่ายหลายครั้งซึ่งเพิ่มเวลาในการตอบสนอง การข้ามเหล่านี้ไม่จำเป็นเนื่องจากคำขอพร็อกซี 1 "ไปถึง" MP แล้ว
ผลกระทบ
การเรียกใช้พร็อกซี API หนึ่งจากพร็อกซี API อื่นจะทำให้เกิดการข้ามเครือข่ายที่ไม่จำเป็น นั่นคือคำขอต้องส่งจาก Message Processor หนึ่งไปยัง Message Processor อื่น
แนวทางปฏิบัติแนะนำ
- ใช้ฟีเจอร์การเชื่อมโยงพร็อกซี proxy chaining
เพื่อเรียกใช้พร็อกซี API หนึ่งจากพร็อกซี API อื่น การเชื่อมโยงพร็อกซีมีประสิทธิภาพมากกว่าเนื่องจากใช้การเชื่อมต่อในเครื่องเพื่ออ้างอิงปลายทางเป้าหมาย (พร็อกซี API อื่น)
ตัวอย่างโค้ดแสดงการเชื่อมโยงพร็อกซีโดยใช้ LocalTargetConnection ในคำจำกัดความของปลายทาง
<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
พร็อกซี API ที่เรียกใช้จะทำงานภายใน Message Processor เดียวกัน ซึ่งจะหลีกเลี่ยงการข้ามเครือข่ายตามที่แสดงในรูปต่อไปนี้
รูปที่ 2: โฟลว์ของรหัสที่มีการเชื่อมโยงพร็อกซี