درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
بهعنوان توسعهدهندهای که با Apigee Edge کار میکند، فعالیتهای توسعه اصلی شما شامل پیکربندی پراکسیهای API است که بهعنوان پراکسی برای APIها یا سرویسهای زیرینه عمل میکنند. این سند مرجعی از همه عناصر پیکربندی دردسترس شما هنگام ساختن پراکسیهای API است.
اگر درحال یادگیری نحوه ساختن پراکسیهای API هستید، توصیه میشود با موضوع ساختن پراکسی API ساده شروع کنید.
رایجترین روشهای ویرایش پیکربندیهای پراکسی عبارتاند از:
- استفاده از ویرایشگر XML در «میانای کاربر Edge»
- پیکربندی را بارگیری کنید و آن را بهصورت محلی ویرایش کنید، همانطور که در توسعه محلی پیکربندیهای پراکسی توضیح داده شده است.
توسعه محلی پیکربندیهای پراکسی
میتوانید پیکربندیهای پراکسی خود را بارگیری کنید تا بتوانید آنها را در یک ماشین محلی ویرایش کنید. وقتی کارتان تمام شد، نتایج را در Edge بارگذاری میکنید. این رویکرد به شما امکان میدهد پیکربندیهای پراکسی را در کنترل منبع، نسخهبندی، و دیگر گردش کارهای همرسانیشده ادغام کنید. علاوهبراین، با کار کردن روی پیکربندی پراکسی بهصورت محلی، میتوانید از ویرایشگر XML و ابزارهای اعتبارسنجی خودتان استفاده کنید.
این بخش نحوه استفاده از واسط کاربر برای بارگیری پیکربندی پراکسی موجود، ویرایش آن،
و سپس بارگذاری مجدد آن در Edge برای استقرار را شرح میدهد. همچنین میتوانید از
apigeetool
برای بارگیری و استقرار پیکربندی پراکسی جدید (بااستفاده از دستورات fetchproxy و
deployproxy، بهترتیب) استفاده کنید.
برای ویرایش پیکربندی پراکسی بهصورت محلی بااستفاده از واسط کاربر:
- پیکربندی پراکسی کنونی را در «واسط کاربر Edge» بارگیری کنید. (در نمای «پراکسیهای API»، پروژه > بارگیری بازبینی را انتخاب کنید.)
- در ماشین محلیتان، دایرکتوری جدیدی ایجاد کنید و فایل ZIP بارگیریشده را در آن
ازهم باز کنید.
برای ازهم باز کردن فایل ZIP، میتوانید از ابزاری مثل
unzipاستفاده کنید، همانطور که مثال زیر نشان میدهد:mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdirمحتوای ازهم بازشده فایل ZIP باید مشابه ساختار توضیحدادهشده در ساختار پراکسی API باشد.
- فایلهای منبع را درصورت نیاز ویرایش کنید. برای شرح فایلهای منبع در پیکربندی
پراکسی، به
فایلهای پیکربندی و
ساختار دایرکتوری پراکسی API مراجعه کنید.
برای مثال، برای فعال کردن پایش سلامتی در پراکسی API، فایل پیکربندی TargetEndpoint را در دایرکتوری
/apiproxy/targets/ویرایش کنید. فایل پیشفرض در این دایرکتوریdefault.xmlاست، هرچند اگر از هدفهای شرطی استفاده کنید ممکن است فایلهایی با نامهای متفاوت وجود داشته باشد.در این مورد، اگر فایل پیکربندی TargetEndpoint و دایرکتوری آن وجود ندارد، آنها را ایجاد کنید.
- پساز پایان ویرایش فایلهای پیکربندی پراکسی، حتماً تغییرات خود را ذخیره کنید.
- به دایرکتوری جدیدی که هنگام ازهم بازکردن فایلهای ZIP ایجاد کردید تغییر دهید (ریشه فایلهای پیکربندی ازهم بازشده).
برای مثال، اگر فایلها را در دایرکتوری
/myappdirازهم باز کردید، به آن دایرکتوری تغییر دهید، همانطور که در مثال زیر نشان داده شده است:cd myappdir
قبلاز اینکه فایلهای پیکربندی پراکسی را دوباره بایگانی کنید، باید به این فهرست راهنما تغییر دهید زیرا نمیخواهید فهرست راهنمای
/myappdirدر فایل ZIP گنجانده شود. دایرکتوری سطح بالای فایل ZIP باید/apiproxyباشد. - فایلهای پیکربندی پراکسی، ازجمله فایلهای جدید یا تغییریافته، را دوباره بایگانی کنید. میتوانید از
ابزاری مانند
zipاستفاده کنید، همانطور که مثال زیر نشان میدهد:zip my-new-proxy.zip -r .
دایرکتوری سطح بالای فایل ZIP باید
/apiproxyباشد.برای نام فایل ZIP هیچ الزام خاصی وجود ندارد. برای مثال، نیازی نیست شماره بازبینی را افزایش دهید یا تاریخ را در نام فایل مشخص کنید، اما انجام این کار میتواند برای اشکالزدایی یا کنترل منبع مفید باشد.
وقتی پیکربندی پراکسی جدید را بارگذاری میکنید، Edge بهطور خودکار شماره بازبینی آن را افزایش میدهد.
- پیکربندی پراکسی جدید را بااستفاده از «واسط کاربر Edge» بارگذاری کنید. (در نمای پراکسیهای API
، پروژه > بارگذاری بازبینی جدید را انتخاب کنید.)
اگر خطایی مثل Bundle is invalid. Empty bundle. دریافت کردید، مطمئن شوید دایرکتوری سطح بالای فایل ZIP شما
/apiproxyباشد. اگر اینطور نیست، فایلهای پیکربندی پراکسی را از ریشه دایرکتوری ازهم بازشده دوباره بایگانی کنید.پساز بارگذاری پیکربندی پراکسی جدید، Edge شماره بازبینی را افزایش میدهد و آن را در نمای خلاصه بازبینی نمایش میدهد.
Edge پساز بارگذاری نسخه جدید با «واسط کاربر»، آن را برایتان مستقر نمیکند.
- نسخه جدیدتان را پیاده کنید.
برای اطلاعات بیشتر، آموزش گامبهگام: نحوه بارگیری پراکسی بااستفاده از رابط کاربری و API مدیریت در انجمن Apigee را ببینید.
ساختار پراکسی میانای برنامهسازی کاربردی
پراکسی API از پیکرببندی زیر تشکیل شده است:
| پیکربندی پایه | تنظیمات پیکربندی اصلی برای پراکسی میانای برنامهسازی کاربردی. پیکربندی پایه را ببینید. |
| پیکربندی ProxyEndpoint | تنظیمات اتصال HTTP ورودی (از برنامههای درخواستکننده به Apigee Edge)، جریانهای درخواست و پاسخ، و پیوستهای خطمشی. ProxyEndpoint را ببینید. |
| پیکربندی TargetEndpoint | تنظیمات اتصال HTTP خروجی (از Apigee Edge به سرویس زیرینه)، جریانهای درخواست و پاسخ، و پیوستهای خطمشی. TargetEndpoint را ببینید. |
| جریانها | خطوط لوله درخواست و پاسخ ProxyEndpoint و TargetEndpoint که خطمشیها میتوانند به آنها پیوست شوند. جریانها را ببینید. |
| خطمشیها | فایلهای پیکربندی با قالب XML که با طرحوارههای خطمشی Apigee Edge مطابقت دارند. به خطمشیها مراجعه کنید. |
| منابع | اسکریپتها، فایلهای JAR، و فایلهای XSLT که توسط خطمشیها برای اجرای منطق سفارشی ارجاع داده میشوند. منابع را ببینید. |
ساختار فهرست راهنمای پراکسی API و محتوا
عناصر جدول بالا براساس فایلهای پیکربندی در ساختار دایرکتوری زیر تعریف میشوند:

فایلهای پیکربندی و ساختار دایرکتوری یک پراکسی API
این بخش فایلهای پیکربندی و ساختار دایرکتوری یک پراکسی API را توضیح میدهد.
پیکربندی پایه
/apiproxy/weatherapi.xml
پیکربندی پایه برای پراکسی API که نام پراکسی API را تعریف میکند. نام باید در سازمان منحصربهفرد باشد.
پیکربندی نمونه:
<APIProxy name="weatherapi"> </APIProxy>
عناصر پیکربندی پایه
| نام | شرح | پیشفرض | الزامی است؟ |
|---|---|---|---|
APIProxy |
|||
name |
نام پراکسی API که باید در سازمان یکتا باشد. نویسههایی که
مجاز به استفاده در نام هستید به موارد زیر محدود میشود:
A-Za-z0-9_- |
موجود نیست | بله |
revision |
شماره بازبینی پیکربندی پراکسی API. نیازی نیست که شماره بازبینی را بهطور صریح تنظیم کنید، زیرا Apigee Edge بهطور خودکار بازبینی فعلی پراکسی API را پیگیری میکند. | موجود نیست | نه |
ConfigurationVersion |
نسخه طرحواره پیکربندی پراکسی API که این پراکسی API با آن مطابقت دارد. تنها مقدار پشتیبانیشده درحالحاضر majorVersion 4 و minorVersion 0 است. این تنظیم ممکن است در آینده برای فعال کردن تکامل قالب پراکسی API استفاده شود. | ۴٫۰ | نه |
Description |
شرح نوشتاری کارگزار پراکسی API. درصورت ارائه، شرح در واسط کاربر مدیریت Edge نمایش داده خواهد شد. | موجود نیست | نه |
DisplayName |
نامی کاربرپسند که ممکن است با ویژگی name پیکربندی
کارگزار API متفاوت باشد. |
موجود نیست | نه |
Policies |
فهرستی از خطمشیها در دایرکتوری /policies این پراکسی API. معمولاً این عنصر را فقط زمانی میبینید که پراکسی API بااستفاده از واسط کاربر مدیریت Edge ایجاد شده باشد.
این صرفاً یک تنظیم «مانیفست» است که برای ارائه دید به محتویات
پراکسی API طراحی شده است. |
موجود نیست | نه |
ProxyEndpoints |
فهرست ProxyEndpoints در دایرکتوری /proxies این پراکسی API. معمولاً این عنصر را فقط زمانی میبینید که پراکسی API بااستفاده از واسط کاربر مدیریت Edge ایجاد شده باشد. این صرفاً یک تنظیم «مانیفست» است که برای ارائه نمایانسازی در
محتوای پراکسی API طراحی شده است. |
موجود نیست | نه |
Resources |
فهرست منابع (JavaScript، Python، Java، XSLT) در /resources
دایرکتوری این پراکسی API. معمولاً این عنصر را فقط زمانی میبینید که پراکسی API بااستفاده از واسط کاربر مدیریت Edge ایجاد شده باشد. این صرفاً یک تنظیم «مانیفست» است که برای
ارائه نمایانسازی محتوای پراکسی API طراحی شده است. |
موجود نیست | نه |
Spec |
«مشخصات OpenAPI» مرتبط با پراکسی API را شناسایی میکند. مقدار
روی نشانی وب یا مسیر در فروشگاه مشخصات تنظیم شده است. توجه: فروشگاه مشخصات فقط در تجربه «لبه جدید» دردسترس است. برای اطلاعات بیشتر درباره فروشگاه مشخصات، به مدیریت و همرسانی مشخصات مراجعه کنید. |
موجود نیست | نه |
TargetServers |
فهرستی از TargetServers که در هریک از TargetEndpoints این پراکسی API ارجاع داده شده است. معمولاً این عنصر را فقط زمانی میبینید که پراکسی API بااستفاده از واسط کاربر مدیریت Edge ایجاد شده باشد. این صرفاً یک تنظیم «مانیفست» است که برای ارائه دید به محتویات پراکسی API طراحی شده است. | موجود نیست | نه |
TargetEndpoints |
فهرستی از TargetEndpoints در دایرکتوری /targets این پراکسی API. معمولاً این عنصر را فقط زمانی میبینید که پراکسی API بااستفاده از واسط کاربر مدیریت Edge ایجاد شده باشد. این صرفاً یک تنظیم «مانیفست» است که برای ارائه نمایانسازی در
محتوای پراکسی API طراحی شده است. |
موجود نیست | نه |
ProxyEndpoint
تصویر زیر جریان درخواست/پاسخ را نشان میدهد:

/apiproxy/proxies/default.xml
پیکربندی ProxyEndpoint رابط ورودی (مشتریمحور) را برای یک میانای برنامهسازی کاربردی پراکسی تعریف میکند. وقتی ProxyEndpoint را پیکربندی میکنید، پیکربندی شبکهای راهاندازی میکنید که نحوه فراخوانی API واسطهشده توسط برنامههای مشتری («برنامهها») را تعریف میکند.
پیکربندی نمونه زیر از ProxyEndpoint در
/apiproxy/proxies ذخیره میشود:
<ProxyEndpoint name="default">
<PreFlow/>
<Flows/>
<PostFlow/>
<HTTPProxyConnection>
<BasePath>/weather</BasePath>
<VirtualHost>default</VirtualHost>
</HTTPProxyConnection>
<FaultRules/>
<DefaultFaultRule/>
<RouteRule name="default">
<TargetEndpoint>default</TargetEndpoint>
</RouteRule>
</ProxyEndpoint>عناصر پیکربندی موردنیاز در یک ProxyEndpoint پایه عبارتاند از:
پیکربندی ProxyEndpoint عناصر
| نام | شرح | پیشفرض | الزامی است؟ |
|---|---|---|---|
ProxyEndpoint |
|||
name |
نام ProxyEndpoint. وقتی (در موارد نادر) چندین ProxyEndpoints تعریف شده باشد، باید در پیکربندی پراکسی API منحصربهفرد باشد. نویسههایی که مجاز به استفاده از آنها در نام هستید
به موارد زیر محدود میشود: A-Za-z0-9._\-$ %. |
موجود نیست | بله |
PreFlow |
خطمشیها را در جریان PreFlow درخواست یا پاسخ تعریف میکند. | موجود نیست | بله |
Flows |
خطمشیها را در جریانهای شرطی درخواست یا پاسخ تعریف میکند.
|
موجود نیست | بله |
PostFlow |
خطمشیها را در جریان PostFlow درخواست یا پاسخ تعریف میکند.
|
موجود نیست | بله |
HTTPProxyConnection |
نشانی شبکه و مسیر URI مرتبط با پراکسی API را تعریف میکند | ||
BasePath |
رشتهای الزامی که مسیر شناسه منبع یکنواخت مورداستفاده Apigee Edge را برای مسیریابی پیامهای ورودی به پراکسی API مناسب بهطور منحصربهفرد شناسایی میکند. BasePath یک تکه نشانی وب (برای مثال استفاده از کارت عام در مسیرهای پایه میتوانید از یک یا چند نویسه عام «*» در مسیرهای پایه پراکسی API استفاده کنید. برای مثال، مسیر پایه مهم: Apigee از استفاده از نویسه عام «*» بهعنوان اولین عنصر مسیر پایه پشتیبانی نمیکند. برای مثال، این مورد پشتیبانی نمیشود: |
/ | بله |
VirtualHost |
یک پراکسی API را با نشانیهای وب پایه خاص برای یک محیط مرتبط میکند. «میزبان مجازی» پیکربندی نامگذاریشدهای است که یک یا چند نشانی وب را برای محیطی تعریف میکند. «میزبانهای مجازی» نامگذاریشده تعریفشده برای یک ProxyEndpoint دامنهها و درگاههایی را که کارگزار میانای برنامهسازی کاربردی در آنها نمایان میشود، و بهتبع آن نشانی وبی را که برنامهها برای فراخوانی کارگزار میانای برنامهسازی کاربردی استفاده میکنند تعیین میکند. بهطور پیشفرض، دو «میزبان مجازی» نامگذاریشده برای محیط تعریف شده است:
|
پیشفرض | نه |
Properties |
مجموعهای از تنظیمات پیکربندی اختیاری HTTP را میتوان بهعنوان ویژگیهای
<ProxyEndpoint> تعریف کرد. |
موجود نیست | نه |
FaultRules |
تعیین میکند که ProxyEndpoint چگونه به خطا واکنش نشان دهد. قانون خطا دو مورد را مشخص میکند:
:
رسیدگی به خطاها را ببینید. |
موجود نیست | نه |
DefaultFaultRule |
خطاهای (سیستم، انتقال، پیامرسانی، یا خطمشی) را که بهطور صریح توسط قانون خطای دیگری مدیریت نمیشوند، مدیریت میکند. رسیدگی به خطاها را ببینید. |
موجود نیست | نه |
RouteRule |
مقصد پیامهای درخواست ورودی را پساز پردازش توسط خط لوله درخواست ProxyEndpoint تعریف میکند. معمولاً، RouteRule به پیکربندی TargetEndpoint نامگذاریشده اشاره میکند، اما میتواند مستقیماً به نشانی وب نیز اشاره کند. | ||
Name |
مشخصه الزامی که نامی برای «قانون مسیر» ارائه میدهد. نویسههایی که مجازید در نام استفاده کنید به موارد زیر محدود میشود: A-Za-z0-9._\-$ %. برای
مثال، Cat2 %_ نام قانونی است. |
موجود نیست | بله |
Condition |
گزاره شرطی اختیاری که برای مسیریابی پویا در زمان اجرا استفاده میشود. Conditional RouteRules مفید است، برای مثال، برای فعال کردن مسیریابی مبتنی بر محتوا برای پشتیبانی از نسخهبندی زیرینه. | موجود نیست | نه |
TargetEndpoint |
رشته اختیاری که پیکربندی TargetEndpoint نامگذاریشده را شناسایی میکند. TargetEndpoint نامگذاریشده هر TargetEndpoint تعریفشده در همان پراکسی API در
دایرکتوری با نامگذاری TargetEndpoint، نشان میدهید که پیامهای درخواست باید پساز پردازش توسط خط لوله درخواست ProxyEndpoint به کجا بازارسال شوند. توجه داشته باشید که این یک تنظیم اختیاری است. ProxyEndpoint میتواند مستقیماً نشانی وب را فراخوانی کند. برای مثال، منبع جاوا اسکریپت یا جاوا که در نقش کارخواه HTTP عمل میکند، ممکن است وظیفه اصلی «نقطه پایانی هدف» را انجام دهد، که عبارت است از بازارسال درخواستها به سرویس زیرینه. |
موجود نیست | نه |
| نشانی وب | رشته اختیاری که نشانی شبکه خروجی فراخواندهشده توسط
ProxyEndpoint را تعریف میکند و از پیکربندیهای TargetEndpoint که ممکن است در
/targets ذخیره شده باشند عبور میکند |
موجود نیست | نه |
نحوه پیکربندی کردن «قوانین مسیر»
TargetEndpoint نامگذاریشده به فایل پیکربندی در /apiproxy/targets اشاره میکند که
RouteRule درخواست را پساز پردازش توسط ProxyEndpoint به آن ارسال میکند.
برای مثال، «قانون مسیر» زیر به پیکربندی
/apiproxy/targets/myTarget.xml اشاره میکند:
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
فراخوانی مستقیم نشانی وب
ProxyEndpoint میتواند مستقیماً سرویس زیرینه را فراخوانی کند. فراخوانی مستقیم نشانی وب از هرگونه پیکربندی
TargetEndpoints نامگذاریشده در /apiproxy/targets) عبور میکند. به همین دلیل،
TargetEndpoint پیکربندی اختیاری میانای برنامهسازی کاربردی پراکسی است، هرچند در عمل، فراخوانی مستقیم
از ProxyEndpoint توصیه نمیشود.
برای مثال، RouteRule زیر با http://api.mycompany.com/v2 تماس HTTP برقرار میکند.
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
مسیرهای شرطی
RouteRules (قوانین مسیر) را میتوان بههم زنجیر کرد تا از مسیریابی پویا در زمان اجرا پشتیبانی کند. درخواستهای ورودی میتوانند براساس سرایندهای HTTP، محتوای پیام، پارامترهای پُرسمان، یا اطلاعات زمینهای مثل زمان روز، منطقه، و غیره به پیکربندیهای TargetEndpoint نامگذاریشده، مستقیماً به نشانیهای وب، یا ترکیبی از این دو هدایت شوند.
Conditional RouteRules مانند دیگر گزارههای شرطی در Apigee Edge کار میکند. مرجع شرایط و مرجع متغیرها را ببینید.
برای مثال، ترکیب RouteRule زیر ابتدا درخواست ورودی را برای تأیید مقدار سرصفحه HTTP ارزیابی میکند. اگر سرایند HTTP routeTo مقدار
TargetEndpoint1 را داشته باشد، درخواست به TargetEndpoint با نام
TargetEndpoint1 بازارسال میشود. درغیراینصورت، درخواست ورودی به
http://api.mycompany.com/v2 بازارسال میشود.
<RouteRule name="MyRoute"> <Condition>request.header.routeTo = "TargetEndpoint1"</Condition> <TargetEndpoint>TargetEndpoint1</TargetEndpoint> </RouteRule> <RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
مسیرهای Null
«قانون مسیر» تهی میتواند برای پشتیبانی از سناریوهایی تعریف شود که در آنها پیام درخواست نیازی به بازارسال به «نقطه پایانی هدف» ندارد. این کار زمانی مفید است که ProxyEndpoint همه پردازشهای لازم را انجام دهد، برای مثال بااستفاده از JavaScript برای فراخوانی سرویس خارجی یا بازیابی دادهها از جستجو در فروشگاه کلید/مقدار «سرویسهای API».
برای مثال، مورد زیر «مسیر» تهی را تعریف میکند:
<RouteRule name="GoNowhere"/>
«مسیرهای» تهی شرطی میتواند مفید باشد. در مثال زیر، «مسیر» تهی پیکربندی شده است تا وقتی سرصفحه HTTP request.header.X-DoNothing مقداری غیر از null داشته باشد اجرا شود.
<RouteRule name="DoNothingOnDemand"> <Condition>request.header.X-DoNothing != null</Condition> </RouteRule>
بهخاطر داشته باشید که RouteRules میتواند زنجیرهای باشد، بنابراین یک Route تهی شرطی معمولاً یکی از اجزای مجموعهای از RouteRules است که برای پشتیبانی از مسیریابی شرطی طراحی شده است.
استفاده عملی از «مسیر» تهی شرطی در پشتیبانی از حافظه نهان است. بااستفاده از مقدار متغیری که توسط خطمشی «حافظه نهان» تنظیم شده است، میتوانید یک پراکسی API را پیکربندی کنید تا وقتی ورودی از حافظه نهان ارائه میشود، «مسیر» تهی را اجرا کند.
<RouteRule name="DoNothingUnlessTheCacheIsStale"> <Condition>lookupcache.LookupCache-1.cachehit is true</Condition> </RouteRule>
TargetEndpoint

TargetEndpoint معادل برونسپاری ProxyEndpoint است. TargetEndpoint بهعنوان کارخواه سرویس زیرینه یا API عمل میکند -- درخواستها را ارسال میکند و پاسخها را دریافت میکند.
پراکسی API نیازی به داشتن هیچ TargetEndpoints ندارد. ProxyEndpoints را میتوان پیکربندی کرد تا مستقیماً نشانیهای وب را فراخوانی کند. پراکسی API بدون TargetEndpoints معمولاً حاوی ProxyEndpoint است که یا مستقیماً سرویس زیرینه را فراخوانی میکند، یا برای فراخوانی سرویس بااستفاده از Java یا JavaScript پیکربندی شده است.
پیکربندی TargetEndpoint
/targets/default.xml
TargetEndpoint اتصال خروجی از Apigee Edge به سرویس یا منبع دیگری را تعریف میکند.
در اینجا پیکربندی نمونهای از TargetEndpoint آورده شده است:
<TargetEndpoint name="default">
<PreFlow/>
<Flows/>
<PostFlow/>
<HTTPTargetConnection>
<URL>http://mocktarget.apigee.net</URL>
<SSLInfo/>
</HTTPTargetConnection>
<FaultRules/>
<DefaultFaultRule/>
<ScriptTarget/>
<LocalTargetConnection/>
</TargetEndpoint>پیکربندی TargetEndpoint عناصر
TargetEndpoint میتواند هدف را به یکی از روشهای زیر فراخوانی کند:
- HTTPTargetConnection برای تماسهای HTTP(S)
- LocalTargetConnection برای زنجیرهسازی کارگزار محلی به کارگزار محلی
- ScriptTarget برای تماس با دستورگان Node.js میزبانیشده در Edge
فقط یکی از این موارد را در TargetEndpoint پیکربندی کنید.
| نام | شرح | پیشفرض | الزامی است؟ |
|---|---|---|---|
TargetEndpoint |
|||
name |
نام TargetEndpoint که باید در پیکربندی پراکسی API منحصربهفرد باشد. نام TargetEndPoint در ProxyEndpoint RouteRule برای
هدایت درخواستهای پردازش خروجی استفاده میشود. نویسههایی که مجاز به استفاده در نام هستید
به موارد زیر محدود میشود: A-Za-z0-9._\-$ %. |
موجود نیست | بله |
PreFlow |
خطمشیها را در جریان PreFlow درخواست یا پاسخ تعریف میکند. | موجود نیست | بله |
Flows |
خطمشیها را در جریانهای شرطی درخواست یا پاسخ تعریف میکند.
|
موجود نیست | بله |
PostFlow |
خطمشیها را در جریان PostFlow درخواست یا پاسخ تعریف میکند.
|
موجود نیست | بله |
HTTPTargetConnection |
با عناصر فرزندش، دسترسی به منبع زیرینه را ازطریق HTTP مشخص میکند. اگر از HTTPTargetConnection استفاده میکنید، انواع دیگر اتصالهای هدف را پیکربندی نکنید (ScriptTarget یا LocalTargetConnection). |
||
URL |
نشانی شبکه سرویس زیرینهای را که TargetEndpoint پیامهای درخواست را به آن بازارسال میکند تعریف میکند. | موجود نیست | نه |
LoadBalancer |
یک یا چند پیکربندی TargetServer نامگذاریشده را تعریف میکند. پیکربندیهای Named TargetServer میتواند برای تراز کردن بار استفاده شود و ۲ یا چند اتصال پیکربندی نقطه پایانی را تعریف کند. همچنین میتوانید از TargetServers برای جدا کردن پیکربندیهای پراکسی API از نشانیهای وب نقاط پایانی سرویس زیرینه واقعی استفاده کنید. تراز کردن بار در سرورهای زیرینه را ببینید. |
موجود نیست | نه |
Properties |
مجموعهای از تنظیمات پیکربندی اختیاری HTTP را میتوان بهعنوان ویژگیهای
<TargetEndpoint> تعریف کرد. |
موجود نیست | نه |
SSLInfo |
بهصورت اختیاری تنظیمات TLS/SSL را در TargetEndpoint تعریف کنید تا اتصال TLS/SSL بین پراکسی API و سرویس هدف را کنترل کنید. پیکربندی «امنیت لایه انتقال»/SSL در «نقطه پایانی هدف» را ببینید. | موجود نیست | نه |
LocalTargetConnection |
با عناصر فرزند خود، منبعی را مشخص میکند که باید بهصورت محلی به آن دسترسی پیدا کرد و از ویژگیهای شبکه مثل تراز بار و پردازشگرهای پیام عبور کرد.
برای مشخص کردن منبع هدف، عنصر فرزند APIProxy (با عنصر ProxyEndpoint) یا عنصر فرزند Path را اضافه کنید. برای اطلاعات بیشتر، زنجیر کردن پراکسیهای API با هم را ببینید. اگر از LocalTargetConnection استفاده میکنید، انواع دیگر اتصال هدف را پیکربندی نکنید (HTTPTargetConnection یا ScriptTarget). |
||
APIProxy |
نام پراکسی میانای برنامهسازی کاربردی را که باید بهعنوان هدف درخواستها استفاده شود مشخص میکند. پراکسی مقصد باید در سازمان و محیط پراکسی ارسالکننده درخواستها باشد. این یک جایگزین برای استفاده از عنصر «مسیر» است. | موجود نیست | نه |
ProxyEndpoint |
با APIProxy استفاده میشود تا نام ProxyEndpoint کارگزار هدف را مشخص کند. | موجود نیست | نه |
Path |
مسیر نقطه پایان یک پراکسی API را مشخص میکند تا بهعنوان هدف درخواستها استفاده شود. پراکسی مقصد باید در سازمان و محیط پراکسی ارسالکننده درخواستها باشد. این جایگزینی برای استفاده از APIProxy است. | موجود نیست | نه |
FaultRules |
تعریف میکند که TargetEndpoint چگونه به خطا واکنش نشان دهد. قانون خطا دو مورد را مشخص میکند:
:
رسیدگی به خطاها را ببینید. |
موجود نیست | نه |
DefaultFaultRule |
خطاهای (سیستم، انتقال، پیامرسانی، یا خطمشی) را که بهطور صریح توسط FaultRule دیگری مدیریت نمیشوند، مدیریت میکند. رسیدگی به خطاها را ببینید. |
موجود نیست | نه |
ScriptTarget |
|||
ResourceURL |
نوع منبع (گره) و نام دستورگان اصلی Node.js را که عملکرد TargetEndpoint را پیادهسازی میکند تعریف میکند.
این دستورگان باید در فایلهای منبع پراکسی API شما گنجانده شود. به افزودن Node.js به پراکسی API موجود مراجعه کنید. اگر از ScriptTarget استفاده میکنید، انواع دیگر اتصالهای هدف را پیکربندی نکنید (HTTPTargetConnection یا LocalTargetConnection). |
موجود نیست | بله |
EnvironmentVariable |
بهصورت اختیاری متغیرهای محیطی را به متن اصلی Node.js منتقل کنید. درک پشتیبانی Edge برای واحدهای Node.js را ببینید. |
موجود نیست | نه |
Arguments |
بهصورت اختیاری، آرگومانهایی را به دستورگان اصلی Node.js ارسال کنید. درک پشتیبانی Edge برای واحدهای Node.js را ببینید. |
موجود نیست | نه |
پیکربندی «امنیت لایه انتقال»/SSL برای TargetEndpoint
TargetEndpoints اغلب باید اتصالات HTTPS را با زیرساخت ناهمگن پشتیبان مدیریت کند. به همین دلیل، تعدادی از تنظیمات پیکربندی TLS/SSL پشتیبانی میشوند.
TLS/SSL عناصر پیکربندی TargetEndpoint
| نام | شرح | پیشفرض | الزامی است؟ |
|---|---|---|---|
SSLInfo |
|||
Enabled |
نشان میدهد که آیا TLS/SSL برای نقطه پایانی فعال است یا خیر.
اگر <URL> پروتکل HTTPS را مشخص کند، مقدار پیشفرض true است،
و اگر <URL> پروتکل HTTP را مشخص کند، مقدار پیشفرض false است. |
اگر <URL> اچتیتیپیاس را مشخص کند درست است |
نه |
TrustStore |
انبار کلیدی که حاوی گواهینامههای سرور مطمئن است. | موجود نیست | نه |
ClientAuthEnabled |
تنظیمی که اصالتسنجی کارخواه خروجی (امنیت لایه انتقال/پوسته ایمن دوطرفه) را روشن میکند | نادرست | نه |
KeyStore |
محل ذخیره کلید حاوی کلیدهای خصوصی که برای اصالتسنجی سرویسگیرنده خروجی استفاده میشود | موجود نیست | بله (اگر ClientAuthEnabled درست باشد) |
KeyAlias |
نام مستعار کلید خصوصی که برای اصالتسنجی مشتری برونسپاری استفاده میشود | موجود نیست | بله (اگر ClientAuthEnabled درست باشد) |
Ciphers |
رمزهای پشتیبانیشده برای «امنیت لایه انتقال»/ پوسته ایمن خروجی. اگر هیچ رمزی مشخص نشده باشد، همه رمزهای دردسترس برای JVM مجاز خواهند بود. برای محدود کردن رمزها، عناصر زیر را که رمزهای پشتیبانیشده را فهرست میکند اضافه کنید: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> |
موجود نیست | نه |
Protocols |
پروتکلهای پشتیبانیشده برای «امنیت لایه انتقال»/ SSL خروجی. اگر هیچ پروتکلی مشخص نشده باشد، همه پروتکلهای دردسترس برای JVM مجاز خواهند بود. برای محدود کردن پروتکلها، عناصر زیر را که پروتکلهای پشتیبانیشده را فهرست میکند اضافه کنید: <Protocols> <Protocol>TLSv1.1</Protocol> <Protocol>TLSv1.2</Protocol> </Protocols> |
موجود نیست | نه |
CommonName |
اگر مشخص شده باشد، مقداری که نام عمومی گواهینامه هدف دربرابر آن اعتبارسنجی میشود. این مقدار فقط برای پیکربندیهای TargetEndpoint و TargetServer معتبر است. برای پیکربندیهای VirtualHost معتبر نیست. بهطور پیشفرض، مقدار مشخصشده با نام عمومی گواهینامه هدف دقیقاً مطابقت داده میشود.
برای مثال، استفاده از بهصورت اختیاری، Apigee میتواند بااستفاده از مشخصه برای مثال، نام معمولی که بهعنوان <CommonName wildcardMatch="true">*.myhost.com</CommonName> |
موجود نیست | نه |
TargetEndpoint نمونه با اصالتسنجی کارخواه خروجی فعال
<TargetEndpoint name="default">
<HttpTargetConnection>
<URL>https://myservice.com</URL>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>true</ClientAuthEnabled>
<KeyStore>myKeystore</KeyStore>
<KeyAlias>myKey</KeyAlias>
<TrustStore>myTruststore</TrustStore>
</SSLInfo>
</HttpTargetConnection>
</TargetEndpoint>برای دستورالعملهای دقیق، پیکربندی کردن «امنیت لایه انتقال» از Edge تا زیرینه (Cloud و Private Cloud) را ببینید.
استفاده از متغیرهای جریان برای تنظیم پویای مقادیر TLS/SSL
همچنین میتوانید جزئیات TLS/SSL را بهصورت پویا تنظیم کنید تا از الزامات زمان اجرای انعطافپذیر پشتیبانی کنید. برای مثال، اگر پراکسی شما به دو هدف بالقوه متفاوت (هدف آزمایشی و هدف تولید) متصل میشود، میتوانید پراکسی API خود را بهصورت برنامهریزیشده طوری تنظیم کنید که محیطی را که درحال فراخوانی است تشخیص دهد و مراجع را بهصورت پویا به انبار کلید و انبار اطمینان مناسب تنظیم کند. مقاله زیر از «انجمن Apigee» این سناریو را با جزئیات بیشتری توضیح میدهد و نمونههای پراکسی API قابلپیادهسازی ارائه میدهد: SSLInfo پویا برای TargetEndpoint بااستفاده از مرجع متغیر.
در مثال زیر از نحوه تنظیم برچسب <SSLInfo> در پیکربندی
TargetEndpoint، مقادیر را میتوان در زمان اجرا، برای مثال، با
Java Callout، خطمشی JavaScript، یا خطمشی «اختصاص پیام» ارائه کرد. از متغیرهای پیامی که
مقادیر موردنظرتان را برای تنظیم کردن دارند استفاده کنید.
متغیرها فقط در عناصر زیر مجاز هستند.
<SSLInfo> <Enabled>{myvars.ssl.enabled}</Enabled> <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled> <KeyStore>{myvars.ssl.keystore}</KeyStore> <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias> <TrustStore>{myvars.ssl.trustStore}</TrustStore> </SSLInfo>
استفاده از ارجاعها برای تنظیم پویای مقادیر «امنیت لایه انتقال»/ پوسته ایمن
هنگام پیکربندی TargetEndpoint که از HTTPS استفاده میکند، باید درنظر بگیرید که وقتی گواهی TLS/SSL منقضی میشود یا تغییر در پیکربندی سیستم شما را ملزم به بهروزرسانی گواهی میکند، چه اتفاقی میافتد. در نصب Edge for Private Cloud، هنگام پیکربندی TLS/SSL بااستفاده از مقادیر ثابت یا بااستفاده از متغیرهای جریان، احتمالاً باید «پردازشگرهای پیام» را بازراهاندازی کنید.
برای اطلاعات بیشتر، بهروزرسانی گواهینامه «امنیت لایه انتقال» را ببینید.
بااینحال، میتوانید «نقطه پایانی هدف» را بهصورت اختیاری پیکربندی کنید تا بهجای آن از مرجع به انبار کلید یا انبار اعتماد استفاده کند. مزیت استفاده از مرجع این است که میتوانید مرجع را بهروز کنید تا به انبار کلید یا انبار اعتماد دیگری اشاره کند و گواهینامه TLS/SSL را بدون نیاز به راهاندازی مجدد «پردازشگرهای پیام» بهروز کنید.
برای مثال، در زیر TargetEndpoint نشان داده شده است که از مرجع انبار کلید استفاده میکند:
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://keystoreref</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>برای ایجاد مرجع با نام keystoreref، از فراخوانی POST API زیر استفاده کنید:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
<Refers>myTestKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:passwordمرجع نام فروشگاه کلید و نوع آن را مشخص میکند.
برای مشاهده مرجع، از فراخوانی GET API زیر استفاده کنید:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:passwordبرای اینکه بعداً مرجع را تغییر دهید تا به انبار کلید دیگری اشاره کند، مطمئن شوید نام مستعار یکسان باشد، از تماس PUT زیر استفاده کنید:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
<Refers>myNewKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:passwordTargetEndpoint با تراز بار هدف
TargetEndpoints بااستفاده از سه الگوریتم تراز بار از تراز بار در چندین TargetServer نامگذاریشده پشتیبانی میکند.
برای دستورالعملهای دقیق، به تراز بار در سرورهای زیرینه مراجعه کنید.
خطمشیها
دایرکتوری /policies در یک پراکسی API شامل همه خطمشیهای دردسترس برای پیوستن به «جریانها» در پراکسی API است.
عناصر پیکربندی خطمشی
| نام | شرح | پیشفرض | الزامی است؟ |
|---|---|---|---|
Policy |
|||
name |
نام داخلی خطمشی. نویسههایی که میتوانید در نام استفاده کنید به این موارد محدود میشود: بهصورت اختیاری، از عنصر |
موجود نیست | بله |
enabled |
برای اجرای خطمشی، روی برای «خاموش کردن» خطمشی، روی |
درست | نه |
continueOnError |
برای برگرداندن خطا درصورت ناموفق بودن خطمشی، روی روی |
نادرست | نه |
async |
توجه: این مشخصه باعث نمیشود خطمشی بهصورت ناهمزمان اجرا شود.
در اکثر موارد، این تنظیم را روی مقدار پیشفرض وقتی روی برای استفاده از رفتار ناهمزمان در پراکسیهای API، به مدل شیء جاوا اسکریپت مراجعه کنید. |
نادرست | نه |
پیوست خطمشی
تصویر زیر توالی اجرای جاریسازی پراکسی API را نشان میدهد:

همانطور که در بالا نشان داده شده است:
خطمشیها بهعنوان مراحل پردازش به جریانها پیوست میشوند. نام خطمشی برای ارجاع دادن به خطمشیای که باید بهعنوان «مرحله» پردازش اجرا شود استفاده میشود. قالب پیوست خطمشی بهصورت زیر است:
<Step><Name>MyPolicy</Name></Step>
خطمشیها به ترتیبی که به یک «جریان» پیوست شدهاند اجرا میشوند. برای مثال:
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
پیکربندی پیوست خطمشی عناصر
| نام | شرح | پیشفرض | الزامی است؟ |
|---|---|---|---|
Step |
|||
Name |
نام خطمشی که باید توسط این تعریف «مرحله» اجرا شود. | موجود نیست | بله |
Condition |
عبارت شرطی که تعیین میکند خطمشی اجرا شود یا نه. اگر خطمشیای شرط مرتبط داشته باشد، خطمشی فقط درصورتی اجرا میشود که عبارت شرطی به درست ارزیابی شود. | موجود نیست | نه |
جریانهای کار
ProxyEndpoint و TargetEndpoint خط لولهای را برای پردازش پیام درخواست و پاسخ تعریف میکنند. خط لوله پردازش از جریان درخواست و جریان پاسخ تشکیل شده است. هر جریان درخواست و جریان پاسخ به PreFlow، یک یا چند جریان اختیاری «شرطی» یا «نامگذاریشده»، و PostFlow تقسیم میشود.
- PreFlow: همیشه اجرا میشود. قبلاز هر «جریان» شرطی اجرا میشود.
- PostFlow: همیشه اجرا میشود. پساز هر «جریان» شرطی اجرا میشود.
علاوهبراین، میتوانید PostClientFlow را به ProxyEndpoint اضافه کنید که پساز
برگرداندن پاسخ به برنامه مشتری درخواستکننده اجرا میشود. فقط خطمشی MessageLogging و
افزونه Google Stackdriver Logging میتوانند به
این جریان پیوست شوند. PostClientFlow تأخیر کارگزار API را کاهش میدهد و اطلاعات را برای
گزارشگیری دردسترس قرار میدهد. این گزارشگیری تا زمانی که پاسخ به مشتری برگردانده نشود محاسبه نمیشود، مثلاً
client.sent.start.timestamp و client.sent.end.timestamp. این جریان عمدتاً برای اندازهگیری فاصله زمانی بین مُهر زمان شروع و پایان برای پیام
پاسخ استفاده میشود.
تماشای ویدیو آموزشی سریع
ویدیو: این ویدیو کوتاه را درباره استفاده از «گزارشگیری پیام» در PostClientFlow بررسی کنید.
در اینجا نمونهای از PostClientFlow با خطمشی گزارش پیام پیوستشده آورده شده است.
...
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<PostClientFlow>
<Request/>
<Response>
<Step>
<Name>Message-Logging-1</Name>
</Step>
</Response>
</PostClientFlow>
...خط لوله پردازش پراکسی API «جریانها» را در توالی زیر اجرا میکند:
روند پردازش درخواست:
- جریان پیشاز درخواست پراکسی
- جریانهای شرطی درخواست پراکسی (اختیاری)
- Proxy Request PostFlow
- جریان پیشاز درخواست هدف
- جریانهای شرطی درخواست هدف (اختیاری)
- Target Request PostFlow
روند پردازش پاسخ:
- جریان پیشاز پاسخ هدف
- جریانهای شرطی پاسخ هدف (اختیاری)
- Target Response PostFlow
- جریان پیشاز پاسخ پراکسی
- جریانهای شرطی پاسخ پراکسی (اختیاری)
- Proxy Response PostFlow
- پاسخ PostClientFlow (اختیاری)
فقط آن دسته از «جریانهایی» که پیوست خطمشی دارند باید در پیکربندیهای ProxyEndpoint یا TargetEndpoint پیکربندی شوند. وقتی خطمشیای نیاز به اجرا درطول پردازش PreFlow یا PostFlow داشته باشد، PreFlow و PostFlow فقط باید در پیکربندی ProxyEndpoint یا TargetEndpoint مشخص شوند.
برخلاف جاریسازیهای شرطی، ترتیب عناصر «جاریسازی پیشاز اجرا» و «جاریسازی پساز اجرا» مهم نیست--کارگزار API همیشه هرکدام را در نقطه مناسبی از خط لوله اجرا میکند، صرفنظر از اینکه در پیکربندی «نقطه پایانی» کجا ظاهر میشوند.
جریانهای شرطی
ProxyEndpoints و TargetEndpoints از تعداد نامحدودی از جریانهای شرطی (که بهعنوان «جریانهای نامدار» نیز شناخته میشوند) پشتیبانی میکنند.
کارگزاری API شرایط مشخصشده در جریان شرطی را آزمایش میکند و اگر شرط برآورده شود، مراحل پردازش در جریان شرطی توسط کارگزاری API اجرا میشود. اگر شرط برآورده نشود، مراحل پردازش در جریان شرطی دور زده میشوند. جریانهای شرطی به ترتیبی که در پراکسی API تعریف شده است ارزیابی میشوند و اولین جریانی که شرط آن برآورده شود اجرا میشود.
با تعریف کردن جاریسازیهای شرطی، این قابلیت را بهدست میآورید که مراحل پردازش را در یک پراکسی API براساس موارد زیر اعمال کنید:
- URI درخواست
- فعل HTTP (دریافت/قرار دادن/پست کردن/حذف کردن)
- مقدار پارامتر پُرسمان، سرایند، و پارامتر فرم
- بسیاری از انواع دیگر شرایط
برای مثال، جاریسازی شرطی زیر مشخص میکند که فقط زمانی اجرا شود که
مسیر منبع درخواست /accesstoken باشد. هر درخواست ورودی با مسیر /accesstoken باعث میشود این جریان همراه با هر خطمشیای که به جریان پیوست شده است اجرا شود. اگر مسیر درخواست شامل پسوند
/accesstoken نباشد، جریان اجرا نمیشود (هرچند ممکن است جریان شرطی دیگری اجرا شود).
<Flows>
<Flow name="TokenEndpoint">
<Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
<Request>
<Step>
<Name>GenerateAccessToken</Name>
</Step>
</Request>
</Flow>
</Flows>عناصر پیکربندی جریان
| نام | شرح | پیشفرض | الزامی است؟ |
|---|---|---|---|
Flow |
خط لوله پردازش درخواست یا پاسخ که توسط A ProxyEndpoint یا TargetEndpoint تعریف شده است | ||
Name |
نام یکتای «جریان». | موجود نیست | بله |
Condition |
عبارت شرطی که یک یا چند متغیر را ارزیابی میکند تا درست یا نادرست بودن آنها را ارزیابی کند. همه «جریانها» بهجز انواع ازپیشتعریفشده «جریان پیشاز اجرا» و «جریان پساز اجرا» باید شرطی برای اجرایشان تعریف کنند. | موجود نیست | بله |
Request |
خط لوله مرتبط با پردازش پیام «درخواست» | موجود نیست | نه |
Response |
خط لوله مرتبط با پردازش پیام «پاسخ» | موجود نیست | نه |
پردازش مرحله
ترتیب متوالی «جریانهای» شرطی توسط Apigee Edge اعمال میشود. جریانهای شرطی
از بالا به پایین اجرا میشوند. اولین «جریان» شرطی که شرط آن به
true ارزیابی میشود اجرا میشود و فقط یک «جریان» شرطی اجرا میشود.
برای مثال، در پیکربندی «جریان» زیر، هر درخواست ورودی که شامل پسوند مسیر /first یا /second نباشد باعث میشود ThirdFlow
اجرا شود و خطمشیای بهنام Return404 را اعمال کند.
<Flows>
<Flow name="FirstFlow">
<Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
<Request>
<Step><Name>FirstPolicy</Name></Step>
</Request>
</Flow>
<Flow name="SecondFlow">
<Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
<Request>
<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>
</Request>
</Flow>
<Flow name="ThirdFlow">
<Request>
<Step><Name>Return404</Name></Step>
</Request>
</Flow>
</Flows>منابع
«منابع» (فایلهای منبع برای استفاده در پراکسیهای API) عبارتاند از دستورگانها، کد، و تبدیلهای XSL که میتوانند بااستفاده از خطمشیها به «جریانها» پیوست شوند. این موارد در بخش «دستورگان» ویرایشگر کارگزار API در واسط کاربر مدیریت نشان داده میشود.
برای اطلاع از انواع منبع پشتیبانیشده، فایلهای منبع را ببینید.
منابع را میتوان در یک پراکسی API، یک محیط، یا یک سازمان ذخیره کرد. در هر مورد، منبع با نام در «خطمشی» ارجاع داده میشود. «سرویسهای میانای برنامهسازی کاربردی» نام را با حرکت از کارگزار میانای برنامهسازی کاربردی به محیط و سپس به سطح سازمان حلوفصل میکند.
منابع ذخیرهشده در سطح سازمان میتوانند توسط «خطمشیها» در هر محیطی ارجاع داده شوند. منابع ذخیرهشده در سطح محیط را میتوان توسط «خطمشیها» در آن محیط ارجاع داد. منبع ذخیرهشده در سطح پراکسی API فقط میتواند توسط «خطمشیها» در آن پراکسی API ارجاع داده شود.