شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
Edge به شما این امکان را می دهد که یک پروکسی API را از یک پروکسی API دیگر فراخوانی کنید. این ویژگی به خصوص اگر یک API Proxy دارید که حاوی کد قابل استفاده مجدد است که می تواند توسط سایر پروکسی های API استفاده شود مفید است.
ضد الگو
فراخوانی یک پروکسی API از دیگری با استفاده از HTTPTargetConnection در نقطه پایانی هدف یا کد جاوا اسکریپت سفارشی منجر به پرش شبکه اضافی می شود.
با استفاده از HTTPTargetConnection، پروکسی 2 را از پروکسی 1 فراخوانی کنید
نمونه کد زیر با استفاده از HTTPTargetConnection، پروکسی 2 را از پروکسی 1 فراخوانی می کند:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>http://myorg-test.apigee.net/proxy2</URL> </HTTPTargetConnection>
پروکسی 2 را از پروکسی 1 از کد جاوا اسکریپت فراخوانی کنید
نمونه کد بعدی با استفاده از جاوا اسکریپت، پروکسی 2 را از پروکسی 1 فراخوانی می کند:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('http://myorg-test.apigee.net/proxy2); response.waitForComplete();
جریان کد
برای درک اینکه چرا این یک نقطه ضعف ذاتی دارد، باید مسیری را که یک درخواست طی می کند همانطور که در نمودار زیر نشان داده شده است، درک کنیم:
همانطور که در نمودار نشان داده شده است، یک درخواست از چندین مؤلفه توزیع شده، از جمله روتر و پردازشگر پیام عبور می کند.
در نمونه کد بالا، فراخوانی پروکسی 2 از پروکسی 1 به این معنی است که درخواست باید از طریق مسیر سنتی (یعنی روتر > MP) در زمان اجرا هدایت شود. این شبیه به فراخوانی یک API از یک کلاینت است که در نتیجه چندین پرش شبکه ایجاد می کند که به تأخیر اضافه می کند. با توجه به اینکه درخواست Proxy 1 قبلاً به MP رسیده است، این پرش ها غیر ضروری هستند.
تاثیر
فراخوانی یک پروکسی API از یک پروکسی API دیگر باعث پرش های غیرضروری شبکه می شود، یعنی درخواست باید از یک پردازشگر پیام به پردازشگر پیام دیگر منتقل شود.
بهترین تمرین
- از ویژگی زنجیره پروکسی برای فراخوانی یک پروکسی API از دیگری استفاده کنید. زنجیره پروکسی کارآمدتر است زیرا از اتصال محلی برای ارجاع به نقطه پایانی هدف (پراکسی API دیگر) استفاده می کند.
نمونه کد، زنجیره پراکسی را با استفاده از LocalTargetConnection در تعریف نقطه پایانی شما نشان می دهد:
<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
پروکسی API فراخوانی شده در همان پردازشگر پیام اجرا می شود. در نتیجه، همانطور که در شکل زیر نشان داده شده است، از پرش شبکه جلوگیری می کند: