คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
พร็อกซี API คือส่วนหน้าที่มีการจัดการสำหรับบริการแบ็กเอนด์ การกำหนดค่าพร็อกซี API พื้นฐานประกอบด้วย ProxyEndpoint (กำหนด URL ของพร็อกซี API) และ TargetEndpoint (กำหนด URL ของบริการแบ็กเอนด์)
Apigee Edge มีความยืดหยุ่นสูงในการสร้างลักษณะการทำงานที่ซับซ้อนตามรูปแบบนี้ ตัวอย่างเช่น คุณสามารถเพิ่มนโยบายเพื่อควบคุมวิธีที่ API ประมวลผลคำขอของไคลเอ็นต์ก่อนที่จะส่ง ไปยังบริการแบ็กเอนด์ หรือจัดการการตอบกลับที่ได้รับจากบริการแบ็กเอนด์ก่อนที่จะ ส่งต่อให้ไคลเอ็นต์ คุณสามารถเรียกใช้บริการอื่นๆ โดยใช้นโยบายการเรียกใช้บริการ เพิ่มลักษณะการทำงานที่กำหนดเองโดยการเพิ่มโค้ด Javascript และแม้แต่สร้างพร็อกซี API ที่ไม่เรียกใช้บริการแบ็กเอนด์
รูปแบบที่ไม่แนะนำ
การใช้การเรียกใช้บริการเพื่อเรียกใช้บริการแบ็กเอนด์ในพร็อกซี API ที่ไม่มีเส้นทางไปยังปลายทางเป้าหมาย สามารถทำได้ในทางเทคนิค แต่จะส่งผลให้ข้อมูลวิเคราะห์เกี่ยวกับประสิทธิภาพของ บริการภายนอกสูญหาย
พร็อกซี API ที่ไม่มีเส้นทางเป้าหมายอาจมีประโยชน์ในกรณีที่คุณไม่จำเป็นต้องส่งต่อ ข้อความคำขอไปยัง TargetEndpoint แต่ ProxyEndpoint จะทำการประมวลผลที่จำเป็นทั้งหมด ตัวอย่างเช่น ProxyEndpoint สามารถดึงข้อมูลจากการค้นหาไปยังที่เก็บคีย์/ค่าของบริการ API และส่งคืนการตอบกลับโดยไม่ต้องเรียกใช้บริการแบ็กเอนด์
คุณสามารถกำหนดเส้นทาง Null ในพร็อกซี API ได้ดังที่แสดงไว้ที่นี่
<RouteRule name="noroute"/>
พร็อกซีที่ใช้เส้นทาง Null คือพร็อกซี "ไม่มีเป้าหมาย" เนื่องจากไม่ได้เรียกใช้บริการแบ็กเอนด์เป้าหมาย
ในทางเทคนิคแล้ว คุณสามารถเพิ่มการเรียกใช้บริการไปยังพร็อกซีที่ไม่มีเป้าหมายเพื่อเรียกใช้บริการภายนอกได้ดังที่แสดงในตัวอย่างด้านล่าง
<!-- /antipatterns/examples/service-callout-no-target-1.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request> <Step> <Name>ServiceCallout-InvokeBackend</Name> </Step> </Request> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/no-target-proxy</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="noroute"/> </ProxyEndpoint>
อย่างไรก็ตาม พร็อกซีไม่สามารถให้ข้อมูลวิเคราะห์เกี่ยวกับลักษณะการทำงานของบริการภายนอก (เช่น เวลาประมวลผลหรืออัตราข้อผิดพลาด) ซึ่งทำให้ประเมินประสิทธิภาพของบริการภายนอกได้ยาก
ผลกระทบ
- ไม่มีข้อมูลวิเคราะห์เกี่ยวกับการโต้ตอบกับบริการภายนอก ( รหัสข้อผิดพลาด เวลาตอบสนอง ประสิทธิภาพเป้าหมาย ฯลฯ)
- ตรรกะเฉพาะที่จำเป็นก่อนหรือหลังการเรียกใช้บริการจะรวมเป็นส่วนหนึ่งของตรรกะพร็อกซีโดยรวม ซึ่งทำให้เข้าใจและนำกลับมาใช้ใหม่ได้ยากขึ้น
แนวทางปฏิบัติแนะนำ
หากพร็อกซี API โต้ตอบกับบริการภายนอกเพียงบริการเดียว พร็อกซีควรเป็นไปตามรูปแบบการออกแบบพื้นฐาน โดยกำหนดบริการแบ็กเอนด์เป็นปลายทางเป้าหมายของพร็อกซี API พร็อกซี ที่ไม่มีกฎการกำหนดเส้นทางไปยังปลายทางเป้าหมายไม่ควรเรียกใช้บริการแบ็กเอนด์โดยใช้นโยบาย ServiceCallout
การกำหนดค่าพร็อกซีต่อไปนี้จะใช้ลักษณะการทำงานเดียวกับตัวอย่างด้านบน แต่เป็นไปตามแนวทางปฏิบัติแนะนำ
<!-- /antipatterns/examples/service-callout-no-target-2.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/simple-proxy-with-route-to-backend</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
ใช้การเรียกใช้บริการเพื่อรองรับสถานการณ์การรวมบริการต่างๆ เข้าด้วยกัน ซึ่งคุณต้องการเรียกใช้บริการภายนอกก่อน หรือหลังการเรียกใช้ปลายทางเป้าหมาย การเรียกใช้บริการไม่ได้มีไว้เพื่อแทนที่การเรียกใช้ปลายทางเป้าหมาย