คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
พร็อกซี API คือ Facade ที่มีการจัดการสำหรับบริการแบ็กเอนด์ การกำหนดค่าพร็อกซี API พื้นฐานประกอบด้วย ProxyEndpoint (การกำหนด URL ของพร็อกซี API) และ TargetEndpoint (การกำหนด URL ของบริการแบ็กเอนด์)
Apigee Edge มีความยืดหยุ่นอย่างมากในการสร้างลักษณะการทำงานที่ซับซ้อนนอกเหนือจากรูปแบบนี้ ตัวอย่างเช่น เพิ่มนโยบายเพื่อควบคุมวิธีที่ API ดำเนินการตามคำขอของไคลเอ็นต์ก่อนส่ง ไปยังบริการแบ็กเอนด์ หรือแก้ไขการตอบสนองที่ได้รับจากบริการแบ็กเอนด์ก่อน ส่งต่อไปยังไคลเอ็นต์ คุณสามารถเรียกใช้บริการอื่นๆ โดยใช้นโยบายคำขอราคาเสนอบริการ เพิ่มลักษณะการทำงานที่กำหนดเองโดยการเพิ่มโค้ด JavaScript หรือแม้แต่สร้างพร็อกซี API ที่ไม่ได้เรียกใช้บริการแบ็กเอนด์
ลาย Antipattern
การใช้คำขอราคาเสนอบริการเพื่อเรียกใช้บริการแบ็กเอนด์ในพร็อกซี 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 พร็อกซี ที่ไม่มีกฎการกำหนดเส้นทางไปยังปลายทางเป้าหมายไม่ควรเรียกใช้บริการแบ็กเอนด์โดยใช้นโยบาย Serviceข้อความไฮไลต์
การกำหนดค่าพร็อกซีต่อไปนี้จะใช้ลักษณะการทำงานเดียวกับตัวอย่างด้านบน แต่ก็ดีที่สุด แนวทางปฏิบัติ:
<!-- /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>
ใช้ข้อความไฮไลต์บริการเพื่อสนับสนุนสถานการณ์แมชอัปที่คุณต้องการเรียกใช้บริการภายนอกก่อนหน้านี้ หรือหลังจากเรียกใช้ปลายทางเป้าหมาย ข้อความไฮไลต์บริการไม่ได้มีไว้เพื่อแทนที่ปลายทางเป้าหมาย คำขอ