אתם צופים במסמכי התיעוד של Apigee ושל Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge.
ב-Apigee אפשר להפעיל proxy ל-API אחד מתוך proxy אחר ל-API. התכונה הזו שימושית במיוחד אם יש לכם proxy ל-API שמכיל קוד לשימוש חוזר, שאפשר להשתמש בו ב-proxy ל-API אחרים.
תבנית אנטי
הפעלת proxy ל-API אחד מתוך proxy ל-API אחר באמצעות HTTPTargetConnection בנקודת הקצה של היעד או באמצעות קוד JavaScript מותאם אישית מובילה לניתוב נוסף ברשת.
הפעלת שרת proxy 2 משרת proxy 1 באמצעות HTTPTargetConnection
בדוגמת הקוד הבאה, מתבצעת קריאה ל-Proxy 2 מ-Proxy 1 באמצעות HTTPTargetConnection:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>https://api-test.example.com/proxy2</URL> </HTTPTargetConnection>
הפעלת proxy 2 מ-proxy 1 מקוד JavaScript
בדוגמת הקוד הבאה מופעל פרוקסי 2 מפרוקסי 1 באמצעות JavaScript:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('https://api-test.example.com/proxy2); response.waitForComplete();
זרימת קוד
כדי להבין למה יש לזה חיסרון מובנה, צריך להבין את המסלול שבו עוברת בקשה, כפי שמודגם בתרשים הבא:
כפי שמוצג בדיאגרמה, בקשה עוברת דרך כמה רכיבים מבוזרים, כולל הנתב ומעבד בקשות.
בדוגמאות הקוד שלמעלה, הפעלת proxy 2 מ-proxy 1 פירושה שהבקשה צריכה להיות מנותבת דרך המסלול המסורתי (Router > MP) בזמן הריצה. זה דומה להפעלת API מלקוח, וכך מתבצעות כמה קפיצות ברשת שמוסיפות לזמן האחזור. הניתובים האלה מיותרים, כי הבקשה של proxy 1 כבר הגיעה ל-MP.
השפעה
הפעלת proxy ל-API אחד מ-proxy ל-API אחר גורמת להוספת קפיצות מיותרות ברשת, כלומר הבקשה צריכה לעבור ממעבד בקשות אחד למעבד בקשות אחר.
שיטה מומלצת
- משתמשים בתכונה proxy chaining כדי להפעיל שרת proxy של API אחד מתוך שרת proxy אחר. שרשור פרוקסי יעיל יותר כי הוא משתמש בחיבור מקומי כדי להפנות לנקודת הקצה של היעד (פרוקסי API אחר).
בדוגמת הקוד הבאה מוצג שרשור של שרתי proxy באמצעות
LocalTargetConnectionבהגדרת נקודת הקצה:<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
שרת ה-Proxy של ה-API שהופעל מורץ באותו מעבד הודעות, ולכן הוא לא עובר דרך הרשת, כמו שמוצג באיור הבא:
איור 2: זרימת קוד עם שרשור של שרתי proxy