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