مرجع پیکربندی پروکسی API

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

به عنوان یک توسعه دهنده که با Apigee Edge کار می کند، فعالیت های توسعه اولیه شما شامل پیکربندی پراکسی های API است که به عنوان پراکسی برای API ها یا خدمات باطن عمل می کنند. این سند مرجع تمام عناصر پیکربندی است که هنگام ساختن پراکسی های API در دسترس شماست.

اگر در حال یادگیری نحوه ساخت پراکسی های API هستید، توصیه می شود با مبحث ساخت یک پراکسی ساده API شروع کنید.

رایج‌ترین روش‌های ویرایش تنظیمات پروکسی عبارتند از:

توسعه محلی تنظیمات پروکسی

می‌توانید پیکربندی‌های پراکسی خود را دانلود کنید تا بتوانید آنها را در یک دستگاه محلی ویرایش کنید. وقتی کارتان تمام شد، نتایج را در Edge آپلود می‌کنید. این رویکرد به شما امکان می‌دهد پیکربندی‌های پراکسی را در کنترل منبع، نسخه‌سازی و سایر گردش‌های کاری مشترک خود ادغام کنید. علاوه بر این، با کار بر روی یک پیکربندی پروکسی به صورت محلی، می‌توانید از ویرایشگر XML و ابزار اعتبارسنجی خود استفاده کنید.

این بخش نحوه استفاده از رابط کاربری را برای دانلود یک پراکسی مخدوش موجود، ویرایش و سپس آپلود مجدد آن به Edge برای استقرار توضیح می‌دهد. همچنین می توانید از apigeetool برای دانلود و استقرار یک پیکربندی پراکسی جدید استفاده کنید (به ترتیب با استفاده از دستورات fetchproxy و deployproxy .)

برای ویرایش یک پیکربندی پروکسی به صورت محلی با استفاده از رابط کاربری:

  1. پیکربندی پراکسی فعلی را در رابط کاربری Edge دانلود کنید. (در نمای API Proxies، Project > Download Revision را انتخاب کنید.)
  2. در دستگاه محلی خود، یک دایرکتوری جدید ایجاد کنید و فایل ZIP دانلود شده را در آن گسترش دهید.

    برای گسترش فایل ZIP، می توانید از ابزاری مانند unzip استفاده کنید، همانطور که در مثال زیر نشان داده شده است:

    mkdir myappdir
    unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir

    محتویات گسترش یافته فایل ZIP باید مشابه ساختار توصیف شده در ساختار پروکسی API باشد.

  3. فایل های منبع را در صورت لزوم ویرایش کنید. برای توضیح فایل‌های منبع در یک پیکربندی پراکسی، به فایل‌های پیکربندی و ساختار دایرکتوری یک پروکسی API مراجعه کنید.

    به عنوان مثال، برای فعال کردن نظارت بر سلامت در پروکسی API خود، فایل پیکربندی TargetEndpoint را در فهرست /apiproxy/targets/ ویرایش کنید. فایل پیش فرض در این دایرکتوری default.xml است، اگرچه اگر از اهداف شرطی استفاده کنید ممکن است فایل هایی با نام های مختلف وجود داشته باشد.

    در این حالت، اگر فایل پیکربندی TargetEndpoint و دایرکتوری آن وجود نداشت، آنها را ایجاد کنید.

  4. پس از اتمام ویرایش فایل های پیکربندی پروکسی، حتما تغییرات خود را ذخیره کنید.
  5. به دایرکتوری جدیدی که هنگام گسترش فایل‌های ZIP (ریشه فایل‌های پیکربندی توسعه‌یافته) ایجاد کرده‌اید، تغییر دهید.

    به عنوان مثال، اگر فایل ها را در پوشه /myappdir گسترش داده اید، همانطور که در مثال زیر نشان می دهد، به آن دایرکتوری تغییر دهید:

    cd myappdir

    شما باید قبل از بایگانی مجدد فایل های پیکربندی پروکسی خود را به این دایرکتوری تغییر دهید زیرا نمی خواهید پوشه /myappdir در فایل ZIP گنجانده شود. دایرکتوری سطح بالای فایل ZIP باید /apiproxy باشد.

  6. فایل های پیکربندی پروکسی، از جمله فایل های جدید یا تغییر یافته را دوباره بایگانی کنید. همانطور که در مثال زیر نشان داده شده است، می توانید از ابزاری مانند zip استفاده کنید:
    zip my-new-proxy.zip -r .

    دایرکتوری سطح بالای فایل ZIP باید /apiproxy باشد.

    هیچ شرایط خاصی برای نام فایل ZIP وجود ندارد. به عنوان مثال، شما نیازی به افزایش شماره ویرایش یا تعیین تاریخ در نام فایل ندارید، اما انجام این کار می تواند برای اشکال زدایی یا کنترل منبع مفید باشد.

    هنگامی که آن را آپلود می‌کنید، Edge شماره ویرایش پیکربندی پراکسی جدید را برای شما افزایش می‌دهد.

  7. پیکربندی پراکسی جدید را با استفاده از رابط کاربری Edge آپلود کنید. (در نمای API Proxies ، Project > Upload a New Revision را انتخاب کنید.)

    اگر با خطایی مانند Bundle is invalid. Empty bundle. ، سپس مطمئن شوید که دایرکتوری سطح بالای فایل ZIP شما /apiproxy است. اگر اینطور نیست، فایل های پیکربندی پروکسی خود را از ریشه دایرکتوری توسعه یافته مجدداً بایگانی کنید.

    پس از آپلود پیکربندی پراکسی جدید، Edge شماره ویرایش را افزایش می‌دهد و آن را در نمای Revision Summary نمایش می‌دهد.

    Edge نسخه جدید را پس از آپلود با رابط کاربری برای شما اجرا نمی کند.

  8. بازبینی جدید خود را اجرا کنید.

برای اطلاعات بیشتر به آموزش: نحوه بارگیری یک پروکسی با استفاده از رابط کاربری و API مدیریت در انجمن Apigee مراجعه کنید.

ساختار پروکسی API

یک پروکسی API از پیکربندی زیر تشکیل شده است:

پیکربندی پایه تنظیمات پیکربندی اولیه برای یک پراکسی API. به پیکربندی پایه مراجعه کنید.
پیکربندی ProxyEndpoint تنظیمات اتصال HTTP ورودی (از درخواست برنامه‌ها به Apigee Edge)، جریان‌های درخواست و پاسخ، و پیوست‌های خط‌مشی. ProxyEndpoint را ببینید.
پیکربندی TargetEndpoint تنظیمات اتصال HTTP خروجی (از Apigee Edge تا سرویس Backend)، جریان‌های درخواست و پاسخ، و پیوست‌های خط‌مشی. به TargetEndpoint مراجعه کنید.
جریان می یابد خطوط لوله درخواست و پاسخ ProxyEndpoint و TargetEndpoint که می توان خط مشی ها را به آنها پیوست کرد. جریان ها را ببینید.
سیاست ها فایل‌های پیکربندی با فرمت XML که با طرح‌های خط‌مشی Apigee Edge مطابقت دارند. به سیاست ها مراجعه کنید.
منابع اسکریپت ها، فایل های JAR و فایل های XSLT که توسط خط مشی ها برای اجرای منطق سفارشی ارجاع می شوند. منابع را ببینید.

ساختار و محتویات دایرکتوری پروکسی API

اجزای جدول بالا توسط فایل های پیکربندی در ساختار دایرکتوری زیر تعریف شده اند:

ساختار دایرکتوری را نشان می دهد که apiproxy در آن ریشه است. مستقیماً در زیر پوشه apiproxy، خط مشی ها، پراکسی ها، منابع و دایرکتوری های اهداف و همچنین فایل weatherapi.xml قرار دارند.

فایل های پیکربندی و ساختار دایرکتوری یک پروکسی API

این بخش فایل های پیکربندی و ساختار دایرکتوری یک پروکسی API را توضیح می دهد.

پیکربندی پایه

/apiproxy/weatherapi.xml

پیکربندی پایه برای یک پراکسی API، که نام پراکسی API را مشخص می کند. نام باید در یک سازمان منحصر به فرد باشد.

پیکربندی نمونه:

<APIProxy name="weatherapi">
</APIProxy>

عناصر پیکربندی پایه

نام توضیحات پیش فرض مورد نیاز؟
APIProxy
name نام پروکسی API، که باید در یک سازمان منحصر به فرد باشد. کاراکترهایی که مجاز به استفاده در نام هستید به موارد زیر محدود می شود: A-Za-z0-9_- N/A بله
revision شماره بازبینی پیکربندی پروکسی API. شما نیازی به تنظیم صریح شماره ویرایش ندارید، زیرا Apigee Edge به طور خودکار نسخه فعلی پراکسی API را ردیابی می کند. N/A خیر
ConfigurationVersion نسخه ای از طرح پیکربندی پروکسی API که این پروکسی API با آن مطابقت دارد. تنها مقدار پشتیبانی شده در حال حاضر majorVersion 4 و minorVersion 0 است. این تنظیم ممکن است در آینده برای فعال کردن تکامل فرمت پروکسی API استفاده شود. 4.0 خیر
Description شرح متنی پروکسی API. در صورت ارائه، توضیحات در رابط کاربری مدیریت Edge نمایش داده می شود. N/A خیر
DisplayName یک نام کاربرپسند که ممکن است با ویژگی name پیکربندی پروکسی API متفاوت باشد. N/A خیر
Policies فهرستی از خط مشی ها در فهرست /policies این پراکسی API. شما معمولاً فقط زمانی این عنصر را می بینید که پراکسی API با استفاده از رابط کاربری مدیریت Edge ایجاد شود. این صرفاً یک تنظیم "مانیفست" است که برای مشاهده محتویات پراکسی API طراحی شده است. N/A خیر
ProxyEndpoints فهرستی از ProxyEndpoints در فهرست /proxies این پراکسی API. شما معمولاً فقط زمانی این عنصر را می بینید که پراکسی API با استفاده از رابط کاربری مدیریت Edge ایجاد شود. این صرفاً یک تنظیم "مانیفست" است که برای مشاهده محتویات پراکسی API طراحی شده است. N/A خیر
Resources لیستی از منابع (جاوا اسکریپت، پایتون، جاوا، XSLT) در دایرکتوری /resources این پراکسی API. شما معمولاً فقط زمانی این عنصر را می بینید که پراکسی API با استفاده از رابط کاربری مدیریت Edge ایجاد شود. این صرفاً یک تنظیم "مانیفست" است که برای مشاهده محتویات پراکسی API طراحی شده است. N/A خیر
Spec مشخصات OpenAPI که با پراکسی API مرتبط است را شناسایی می کند. این مقدار روی یک URL یا مسیری در ذخیره‌سازی مشخصات تنظیم می‌شود.

توجه : فروشگاه مشخصات فقط در تجربه New Edge موجود است. برای اطلاعات بیشتر درباره فروشگاه مشخصات، به مدیریت و اشتراک‌گذاری مشخصات مراجعه کنید.
N/A خیر
TargetServers فهرستی از TargetServers که در هر TargetEndpointهای این پراکسی API ارجاع شده است. شما معمولاً فقط زمانی این عنصر را می بینید که پراکسی API با استفاده از رابط کاربری مدیریت Edge ایجاد شود. این صرفاً یک تنظیم "مانیفست" است که برای مشاهده محتویات پراکسی API طراحی شده است. N/A خیر
TargetEndpoints فهرستی از TargetEndpoints در فهرست /targets این پراکسی API. شما معمولاً فقط زمانی این عنصر را می بینید که پراکسی API با استفاده از رابط کاربری مدیریت Edge ایجاد شود. این صرفاً یک تنظیم "مانیفست" است که برای مشاهده محتویات پراکسی API طراحی شده است. N/A خیر

ProxyEndpoint

تصویر زیر جریان درخواست/پاسخ را نشان می دهد:

مشتری را در حال تماس با یک سرویس HTTP نشان می دهد. درخواست قبل از پردازش توسط سرویس HTTP از طریق نقطه پایانی پروکسی و سپس نقطه پایانی هدف می رود. پاسخ از طریق پایانه هدف و سپس نقطه پایانی پروکسی قبل از بازگرداندن به مشتری می رود.

/apiproxy/proxies/default.xml

پیکربندی ProxyEndpoint رابط ورودی (رو به مشتری) را برای یک پروکسی API تعریف می کند. هنگامی که یک 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. باید در پیکربندی پروکسی API منحصر به فرد باشد، زمانی که (در موارد نادر) چندین ProxyEndpoint تعریف شده است. کاراکترهایی که مجاز به استفاده در نام هستید به موارد زیر محدود می شود: A-Za-z0-9._\-$ % . N/A بله
PreFlow خط‌مشی‌ها را در جریان PreFlow یک درخواست یا پاسخ تعریف می‌کند. N/A بله
Flows
خط مشی ها را در جریان های مشروط یک درخواست یا پاسخ تعریف می کند.
N/A بله
PostFlow
خط‌مشی‌ها را در جریان PostFlow یک درخواست یا پاسخ تعریف می‌کند.
N/A بله
HTTPProxyConnection آدرس شبکه و مسیر URI مرتبط با پراکسی API را تعریف می کند
BasePath

یک رشته مورد نیاز که به طور منحصربه‌فرد مسیر URI مورد استفاده توسط Apigee Edge را برای مسیریابی پیام‌های دریافتی به پراکسی API مناسب شناسایی می‌کند.

BasePath یک قطعه URI (به عنوان مثال /weather ) است که به URL پایه یک پروکسی API (به عنوان مثال، http://apifactory-test.apigee.net ) اضافه شده است. BasePath باید در یک محیط منحصر به فرد باشد. زمانی که یک پروکسی API تولید یا وارد می شود، منحصر به فرد بودن تأیید می شود.

استفاده از wildcard در مسیرهای پایه

می توانید از یک یا چند علامت عام "*" در مسیرهای پایه پروکسی API استفاده کنید. به عنوان مثال، یک مسیر پایه از /team/*/members به ​​مشتریان اجازه می دهد بدون نیاز به ایجاد جدید https://[host]/team/ blue /members و https://[host]/team/ green /members تماس بگیرند. پروکسی های API برای پشتیبانی از تیم های جدید. توجه داشته باشید که /**/ پشتیبانی نمی شود.

مهم: Apigee استفاده از علامت "*" را به عنوان اولین عنصر مسیر پایه پشتیبانی نمی کند. به عنوان مثال، این پشتیبانی نمی شود: /*/search . شروع مسیر پایه با "*" به دلیل روشی که Edge مسیرهای معتبر را شناسایی می کند، می تواند منجر به خطاهای غیرمنتظره شود.

/ بله
VirtualHost

یک پروکسی API را با URL های پایه خاصی برای یک محیط مرتبط می کند. VirtualHost یک پیکربندی با نام است که یک یا چند URL را برای یک محیط تعریف می کند.

VirtualHost های نامگذاری شده برای یک ProxyEndpoint تعیین می کنند که دامنه ها و پورت هایی را که یک پروکسی API بر روی آنها قرار می گیرد، و با بسط، URLی را که برنامه ها برای فراخوانی یک پراکسی API استفاده می کنند، تعیین می کند.

به طور پیش فرض، دو VirtualHost برای یک محیط تعریف شده است: default و secure . یک سازمان همچنین ممکن است دامنه های سفارشی را تعریف کند. برای اطمینان از اینکه یک پراکسی API فقط از طریق HTTPS در دسترس است، VirtualHost را در HTTPProxyConnection روی secure تنظیم کنید.

پیش فرض خیر
Properties مجموعه ای از تنظیمات پیکربندی اختیاری HTTP را می توان به عنوان ویژگی های <ProxyEndpoint> تعریف کرد. N/A خیر
FaultRules
نحوه واکنش ProxyEndpoint به یک خطا را مشخص می کند. یک قانون خطا دو مورد را مشخص می کند:
  • شرایطی که خطا را بر اساس دسته، زیرمجموعه یا نام از پیش تعریف شده خطا مشخص می کند.
  • یک یا چند خط مشی که رفتار قاعده خطا را برای شرایط مربوطه تعریف می کند

رسیدگی به عیوب را ببینید.

N/A خیر
DefaultFaultRule

هر گونه خطا (سیستم، حمل و نقل، پیام یا خط مشی) را که به صراحت توسط قانون خطای دیگری کنترل نمی شود، کنترل می کند.

رسیدگی به عیوب را ببینید.

N/A خیر
RouteRule مقصد پیام های درخواست ورودی را پس از پردازش توسط خط لوله درخواست ProxyEndpoint تعیین می کند. معمولاً RouteRule به پیکربندی TargetEndpoint با نام اشاره می کند، اما می تواند مستقیماً به یک URL نیز اشاره کند.
Name ویژگی مورد نیاز، که نامی برای RouteRule ارائه می کند. کاراکترهایی که مجاز به استفاده در نام هستید به موارد زیر محدود می شود: A-Za-z0-9._\-$ % . برای مثال، Cat2 %_ یک نام قانونی است. N/A بله
Condition یک دستور شرطی اختیاری که برای مسیریابی پویا در زمان اجرا استفاده می شود. RouteRules شرطی مفید هستند، به عنوان مثال، برای فعال کردن مسیریابی مبتنی بر محتوا برای پشتیبانی از نسخه پشتیبان. N/A خیر
TargetEndpoint

یک رشته اختیاری که پیکربندی TargetEndpoint با نام را مشخص می کند. یک TargetEndpoint با نام هر TargetEndpoint است که در همان پراکسی API در زیر پوشه /targets تعریف شده است.

با نامگذاری TargetEndpoint، نشان می‌دهید که پیام‌های درخواست پس از پردازش توسط خط لوله درخواست ProxyEndpoint کجا باید ارسال شوند. توجه داشته باشید که این یک تنظیم اختیاری است.

یک ProxyEndpoint ممکن است مستقیماً یک URL را فراخوانی کند. به عنوان مثال، یک منبع جاوا اسکریپت یا جاوا، که در نقش یک کلاینت HTTP عمل می کند، ممکن است وظیفه اصلی TargetEndpoint را انجام دهد، یعنی ارسال درخواست ها به یک سرویس پشتیبان.

N/A خیر
URL یک رشته اختیاری که یک آدرس شبکه خروجی را تعریف می‌کند که توسط ProxyEndpoint فراخوانی می‌شود، و از هر گونه پیکربندی TargetEndpoint که ممکن است در زیر /targets ذخیره شود دور می‌زند. N/A خیر

نحوه پیکربندی RouteRules

یک TargetEndpoint با نام به یک فایل پیکربندی در زیر /apiproxy/targets اشاره دارد که RouteRule پس از پردازش توسط ProxyEndpoint یک درخواست را به آن ارسال می کند.

به عنوان مثال، RouteRule زیر به پیکربندی /apiproxy/targets/myTarget.xml اشاره دارد:

<RouteRule name="default">
  <TargetEndpoint>myTarget</TargetEndpoint>
</RouteRule>

فراخوانی مستقیم URL

یک ProxyEndpoint همچنین می تواند مستقیماً یک سرویس Backend را فراخوانی کند. فراخوانی مستقیم URL هر پیکربندی TargetEndpoints با نام را در زیر /apiproxy/targets دور می‌زند. به همین دلیل، TargetEndpoint یک پیکربندی پروکسی API اختیاری است، اگرچه، در عمل، فراخوانی مستقیم از ProxyEndpoint توصیه نمی شود.

برای مثال، RouteRule زیر یک تماس HTTP با http://api.mycompany.com/v2 برقرار می کند.

<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL> 
</RouteRule>

مسیرهای مشروط

RouteRules را می توان برای پشتیبانی از مسیریابی پویا در زمان اجرا زنجیره ای کرد. درخواست‌های ورودی را می‌توان به پیکربندی‌های TargetEndpoint با نام، مستقیماً به URLها یا ترکیبی از این دو، بر اساس سرصفحه‌های HTTP، محتوای پیام، پارامترهای پرس و جو یا اطلاعات زمینه‌ای مانند زمان روز، منطقه محلی و غیره هدایت کرد.

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>

مسیرهای پوچ

یک RouteRule پوچ را می توان برای پشتیبانی از سناریوهایی تعریف کرد که در آن پیام درخواست نیازی به ارسال به TargetEndpoint نیست. این زمانی مفید است که ProxyEndpoint تمام پردازش‌های لازم را انجام می‌دهد، برای مثال با استفاده از جاوا اسکریپت برای فراخوانی یک سرویس خارجی یا بازیابی داده‌ها از جستجو در ذخیره‌سازی کلید/مقدار سرویس‌های API.

به عنوان مثال، موارد زیر یک مسیر تهی را تعریف می کنند:

<RouteRule name="GoNowhere"/>

مسیرهای تهی شرطی می توانند مفید باشند. در مثال زیر، یک مسیر تهی پیکربندی شده است تا زمانی اجرا شود که یک هدر HTTP request.header.X-DoNothing دارای مقداری غیر از null باشد.

<RouteRule name="DoNothingOnDemand">
  <Condition>request.header.X-DoNothing != null</Condition>
</RouteRule>

به یاد داشته باشید که RouteRules را می توان زنجیره ای کرد، بنابراین یک مسیر تهی شرطی معمولاً یکی از اجزای مجموعه ای از RouteRules است که برای پشتیبانی از مسیریابی شرطی طراحی شده است.

استفاده عملی از یک مسیر تهی شرطی برای پشتیبانی از حافظه پنهان خواهد بود. با استفاده از مقدار متغیری که توسط خط مشی Cache تنظیم شده است، می توانید یک پراکسی API را برای اجرای مسیر تهی هنگامی که ورودی از حافظه پنهان ارائه می شود، پیکربندی کنید.

<RouteRule name="DoNothingUnlessTheCacheIsStale">
  <Condition>lookupcache.LookupCache-1.cachehit is true</Condition>
</RouteRule>

TargetEndpoint

مشتری را در حال تماس با یک سرویس HTTP نشان می دهد. درخواست قبل از پردازش توسط سرویس HTTP از طریق نقطه پایانی پروکسی و سپس نقطه پایانی هدف می رود. پاسخ از طریق پایانه هدف و سپس نقطه پایانی پروکسی قبل از بازگرداندن به مشتری می رود.

TargetEndpoint معادل خروجی ProxyEndpoint است. یک TargetEndpoint به عنوان سرویس گیرنده برای یک سرویس پشتیبان یا API عمل می کند - درخواست ها را ارسال می کند و پاسخ ها را دریافت می کند.

یک پروکسی API نیازی به هیچ نقطه هدفی ندارد. ProxyEndpoints را می توان برای فراخوانی مستقیم URL ها پیکربندی کرد. یک پراکسی API بدون TargetEndpoint معمولاً حاوی یک ProxyEndpoint است که مستقیماً یک سرویس پشتیبان را فراخوانی می کند یا برای فراخوانی یک سرویس با استفاده از جاوا یا جاوا اسکریپت پیکربندی شده است.

پیکربندی 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._\-$ % . N/A بله
PreFlow خط‌مشی‌ها را در جریان PreFlow یک درخواست یا پاسخ تعریف می‌کند. N/A بله
Flows
خط مشی ها را در جریان های مشروط یک درخواست یا پاسخ تعریف می کند.
N/A بله
PostFlow
خط‌مشی‌ها را در جریان PostFlow یک درخواست یا پاسخ تعریف می‌کند.
N/A بله
HTTPTargetConnection

با عناصر فرزند خود، دسترسی به منبع پشتیبان را از طریق HTTP مشخص می کند.

اگر از HTTPTargetConnection استفاده می کنید، انواع دیگر اتصالات هدف (ScriptTarget یا LocalTargetConnection) را پیکربندی نکنید.

URL آدرس شبکه سرویس پشتیبان را که TargetEndpoint پیام های درخواستی را به آن فوروارد می کند، تعیین می کند. N/A خیر
LoadBalancer

یک یا چند پیکربندی TargetServer با نام را تعریف می کند. پیکربندی‌های TargetServer نام‌گذاری شده را می‌توان برای متعادل‌سازی بار استفاده کرد که ۲ یا چند اتصال پیکربندی نقطه پایانی را تعریف می‌کند.

همچنین می‌توانید از TargetServers برای جدا کردن پیکربندی‌های پراکسی API از نشانی‌های اینترنتی نقاط پایانی خدمات باطن استفاده کنید.

به تعادل بار در سرورهای باطن مراجعه کنید.

N/A خیر
Properties مجموعه ای از تنظیمات پیکربندی اختیاری HTTP را می توان به عنوان ویژگی های <TargetEndpoint> تعریف کرد. N/A خیر
SSLInfo به صورت اختیاری تنظیمات TLS/SSL را در TargetEndpoint برای کنترل اتصال TLS/SSL بین پراکسی API و سرویس هدف تعریف کنید. به پیکربندی TLS/SSL TargetEndpoint مراجعه کنید. N/A خیر
LocalTargetConnection با عناصر فرزند خود، منبعی را مشخص می‌کند که باید به صورت محلی به آن دسترسی پیدا کرد و ویژگی‌های شبکه مانند متعادل‌سازی بار و پردازشگرهای پیام را دور زد.

برای مشخص کردن منبع هدف، عنصر فرزند APIProxy (با عنصر ProxyEndpoint) یا عنصر فرزند مسیر را وارد کنید.

برای اطلاعات بیشتر، به زنجیره زدن پراکسی‌های API با هم مراجعه کنید.

اگر از LocalTargetConnection استفاده می کنید، انواع دیگر اتصالات هدف (HTTPTargetConnection یا ScriptTarget) را پیکربندی نکنید.

APIProxy نام یک پراکسی API را برای استفاده به عنوان هدف برای درخواست ها مشخص می کند. پراکسی هدف باید در همان سازمان و محیطی باشد که درخواست های ارسال کننده پروکسی است. این یک جایگزین برای استفاده از عنصر Path است. N/A خیر
ProxyEndpoint با APIProxy برای تعیین نام ProxyEndpoint پروکسی مورد نظر استفاده می شود. N/A خیر
Path مسیر نقطه پایانی یک پراکسی API را برای استفاده به عنوان هدف برای درخواست ها مشخص می کند. پراکسی هدف باید در همان سازمان و محیطی باشد که درخواست های ارسال کننده پروکسی است. این یک جایگزین برای استفاده از APIProxy است. N/A خیر
FaultRules
نحوه واکنش TargetEndpoint به یک خطا را مشخص می کند. یک قانون خطا دو مورد را مشخص می کند:
  • شرایطی که خطا را بر اساس دسته، زیرمجموعه یا نام از پیش تعریف شده خطا مشخص می کند.
  • یک یا چند خط مشی که رفتار قاعده خطا را برای شرایط مربوطه تعریف می کند

رسیدگی به عیوب را ببینید.

N/A خیر
DefaultFaultRule

هر گونه خطا (سیستم، حمل و نقل، پیام یا خط مشی) را که به صراحت توسط FaultRule دیگری کنترل نمی شود، کنترل می کند.

رسیدگی به عیوب را ببینید.

N/A خیر
ScriptTarget
ResourceURL

نوع منبع (گره) و نام اسکریپت اصلی Node.js را که عملکرد TargetEndpoint را پیاده سازی می کند، تعریف می کند.

<ResourceURL>node://server.js</ResourceURL>

اسکریپت باید با فایل های منبع پروکسی API شما همراه باشد. به افزودن Node.js به یک پراکسی API موجود مراجعه کنید.

اگر از ScriptTarget استفاده می کنید، انواع دیگر اتصالات هدف (HTTPTargetConnection یا LocalTargetConnection) را پیکربندی نکنید.

N/A بله
EnvironmentVariable

به صورت اختیاری متغیرهای محیط را به اسکریپت اصلی Node.js منتقل کنید.

به درک پشتیبانی Edge برای ماژول‌های Node.js مراجعه کنید.

N/A خیر
Arguments

به صورت اختیاری آرگومان ها را به اسکریپت اصلی Node.js ارسال کنید.

به درک پشتیبانی Edge برای ماژول‌های Node.js مراجعه کنید.

N/A خیر

پیکربندی TLS/SSL TargetEndpoint

TargetEndpoints اغلب نیاز به مدیریت اتصالات HTTPS با زیرساخت باطن ناهمگن دارند. به همین دلیل، تعدادی از تنظیمات پیکربندی TLS/SSL پشتیبانی می شوند.

عناصر پیکربندی TLS/SSL TargetEndpoint

نام توضیحات پیش فرض مورد نیاز؟
SSLInfo
Enabled نشان می دهد که آیا TLS/SSL برای نقطه پایانی فعال است یا خیر. مقدار پیش فرض true است اگر <URL> پروتکل HTTPS را مشخص کند، و اگر <URL> HTTP را مشخص کند، false . درست است اگر <URL> HTTPS را مشخص کند خیر
TrustStore یک فروشگاه کلید حاوی گواهی‌های سرور قابل اعتماد. N/A خیر
ClientAuthEnabled تنظیمی که احراز هویت مشتری خروجی را روشن می‌کند (TLS/SSL دو طرفه) نادرست خیر
KeyStore یک فروشگاه کلید حاوی کلیدهای خصوصی که برای احراز هویت مشتری خروجی استفاده می شود N/A بله (اگر ClientAuthEnabled درست باشد)
KeyAlias نام مستعار کلید کلید خصوصی که برای احراز هویت مشتری خروجی استفاده می شود N/A بله (اگر ClientAuthEnabled درست باشد)
Ciphers

رمزهای پشتیبانی شده برای TLS/SSL خروجی. اگر هیچ رمزی مشخص نشده باشد، تمام رمزهای موجود برای JVM مجاز خواهند بود.

برای محدود کردن رمزها، عناصر زیر را اضافه کنید که رمزهای پشتیبانی شده را فهرست می کند:

<Ciphers>
 <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher>    
 <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher>
</Ciphers>
N/A خیر
Protocols

پروتکل های پشتیبانی شده برای TLS/SSL خروجی. اگر هیچ پروتکلی مشخص نشده باشد، تمام پروتکل های موجود برای JVM مجاز خواهند بود.

برای محدود کردن پروتکل‌ها، عناصر زیر را که پروتکل‌های پشتیبانی‌شده را فهرست می‌کنند، اضافه کنید:

<Protocols>
 <Protocol>TLSv1.1</Protocol>
 <Protocol>TLSv1.2</Protocol>
</Protocols>
N/A خیر
CommonName

در صورت مشخص شدن، مقداری که نام مشترک گواهی هدف با آن اعتبارسنجی می شود. این مقدار فقط برای تنظیمات TargetEndpoint و TargetServer معتبر است. برای پیکربندی VirtualHost معتبر نیست.

به طور پیش فرض، مقدار مشخص شده دقیقاً با نام مشترک گواهی هدف مطابقت دارد. به عنوان مثال، استفاده از *.myhost.com به عنوان مقدار <CommonName> تنها در صورتی با نام میزبان هدف مطابقت و اعتبارسنجی می کند که مقدار دقیق *.myhost.com به عنوان نام مشترک در گواهی هدف مشخص شده باشد.

به صورت اختیاری، Apigee می‌تواند با استفاده از ویژگی wildcardMatch مسابقه را با حروف عام انجام دهد.

به عنوان مثال، اگر عنصر <CommonName> به صورت زیر مشخص شود، یک نام معمولی که به عنوان abc.myhost.com در یک گواهی هدف مشخص شده است، مطابقت و اعتبارسنجی می شود:

<CommonName wildcardMatch="true">*.myhost.com</CommonName>
N/A خیر

نمونه 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>

برای دستورالعمل‌های دقیق، به پیکربندی TLS از Edge به باطن (Cloud و Private Cloud) مراجعه کنید.

استفاده از متغیرهای جریان برای تنظیم مقادیر TLS/SSL به صورت پویا

شما همچنین می توانید به صورت پویا جزئیات TLS/SSL را برای پشتیبانی از الزامات زمان اجرا انعطاف پذیر تنظیم کنید. به عنوان مثال، اگر پراکسی شما به دو هدف بالقوه متفاوت (یک هدف آزمایشی و یک هدف تولید) متصل شود، می‌توانید از پروکسی API خود بخواهید که به طور برنامه‌ریزی محیطی را که در حال فراخوانی است تشخیص دهد و به‌طور پویا ارجاع‌ها را به keystore و truststore مناسب تنظیم کنید. مقاله انجمن Apigee زیر این سناریو را با جزئیات بیشتری توضیح می‌دهد و نمونه‌های پراکسی API قابل اجرا را ارائه می‌کند: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html .

در مثال زیر از نحوه تنظیم تگ <SSLInfo> در پیکربندی TargetEndpoint، مقادیر را می توان در زمان اجرا ارائه کرد، به عنوان مثال، یک Java Callout، یک خط مشی جاوا اسکریپت، یا یک خط مشی Assign Message. از هر متغیر پیام حاوی مقادیری که می خواهید تنظیم کنید استفاده کنید.

متغیرها فقط در عناصر زیر مجاز هستند.

<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>

استفاده از مراجع برای تنظیم پویا مقادیر TLS/SSL

هنگام پیکربندی TargetEndpoint که از HTTPS استفاده می کند، باید موردی را در نظر بگیرید که گواهی TLS/SSL منقضی شود یا تغییر در پیکربندی سیستم شما را ملزم به به روز رسانی گواهی کند. در نصب Edge for Private Cloud، هنگام پیکربندی TLS/SSL با استفاده از مقادیر استاتیک یا با استفاده از متغیرهای جریان، این احتمال وجود دارد که مجبور شوید پردازشگرهای پیام را مجددا راه اندازی کنید.

برای اطلاعات بیشتر، به‌روزرسانی گواهی TLS را ببینید.

با این حال، می‌توانید به‌صورت اختیاری، TargetEndpoint را به گونه‌ای پیکربندی کنید که به جای آن از یک مرجع به keystore یا truststore استفاده کند. مزیت استفاده از مرجع این است که می‌توانید مرجع را به‌روزرسانی کنید تا به یک فروشگاه کلید یا Truststore دیگر برای به‌روزرسانی گواهی TLS/SSL بدون نیاز به راه‌اندازی مجدد پردازشگرهای پیام اشاره کند.

به عنوان مثال، نشان داده شده در زیر یک TargetEndpoint است که از یک مرجع به keystore استفاده می کند:

<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

مرجع نام keystore و نوع آن را مشخص می کند.

برای مشاهده مرجع از تماس 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:password

TargetEndpoint با متعادل کردن بار هدف

TargetEndpoints از تعادل بار در چندین TargetServer با نام با استفاده از سه الگوریتم متعادل کننده بار پشتیبانی می کند.

برای دستورالعمل های دقیق، به تعادل بار در سرورهای باطن مراجعه کنید.

سیاست ها

دایرکتوری /policies در یک پراکسی API شامل تمام خط مشی های موجود برای پیوست شدن به جریان ها در پراکسی API است.

عناصر پیکربندی خط مشی

نام توضیحات پیش فرض مورد نیاز؟
Policy
name

نام داخلی سیاست. نویسه هایی که می توانید در نام استفاده کنید محدود به: A-Za-z0-9._\-$ % . با این حال، رابط کاربری مدیریت Edge محدودیت‌های بیشتری را اعمال می‌کند، مانند حذف خودکار کاراکترهایی که حروف عددی نیستند.

در صورت تمایل، از عنصر <DisplayName> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

N/A بله
enabled

برای اجرای خط مشی روی true تنظیم کنید.

برای "خاموش کردن" خط مشی، روی false تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.

درست است خیر
continueOnError

برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است.

روی true تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.

نادرست خیر
async

توجه : این ویژگی باعث نمی شود که خط مشی به صورت ناهمزمان اجرا شود. در بیشتر موارد، این را با پیش فرض false رها کنید.

وقتی روی true تنظیم شود، اجرای خط‌مشی در رشته‌ای دیگر بارگذاری می‌شود و رشته اصلی برای رسیدگی به درخواست‌های اضافی آزاد است. هنگامی که پردازش آفلاین کامل شد، رشته اصلی باز می گردد و مدیریت جریان پیام را به پایان می رساند. در برخی موارد، تنظیم async روی true عملکرد پروکسی API را بهبود می بخشد. با این حال، استفاده بیش از حد از async می تواند به عملکرد با سوئیچینگ بیش از حد رشته آسیب برساند.

برای استفاده از رفتار ناهمزمان در پراکسی های API، مدل شی جاوا اسکریپت را ببینید.

نادرست خیر

پیوست خط مشی

تصویر زیر دنباله اجرای جریان های پروکسی API را نشان می دهد:

مشتری را نشان می دهد که با یک سرویس HTTP تماس می گیرد. این درخواست با ProxyEndpoint و TargetEndpoint مواجه می‌شود که هر کدام شامل مراحلی هستند که سیاست‌ها را راه‌اندازی می‌کنند. پس از اینکه سرویس HTTP پاسخ را برگرداند، پاسخ توسط TargetEndpoint و سپس ProxyEndpoing قبل از بازگرداندن به مشتری پردازش می شود. همانند درخواست، پاسخ توسط خط‌مشی‌ها در طی مراحل پردازش می‌شود.

همانطور که در بالا نشان داده شده است:

خط‌مشی‌ها به عنوان مراحل پردازش به جریان‌ها پیوست می‌شوند. نام خط‌مشی برای ارجاع به خط‌مشی که باید به‌عنوان مرحله پردازش اجرا شود، استفاده می‌شود. فرمت پیوست خط مشی به شرح زیر است:

<Step><Name>MyPolicy</Name></Step>

خط‌مشی‌ها به ترتیبی که به یک جریان متصل می‌شوند اجرا می‌شوند. به عنوان مثال:

<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>

عناصر پیکربندی پیوست خط مشی

نام توضیحات پیش فرض مورد نیاز؟
Step
Name نام سیاستی که باید با تعریف این مرحله اجرا شود. N/A بله
Condition یک بیانیه مشروط که تعیین می کند آیا این سیاست اجرا می شود یا خیر. اگر یک خط مشی دارای یک شرط مرتبط باشد، سیاست فقط در صورتی اجرا می شود که عبارت شرطی درست ارزیابی شود. N/A خیر

جریان می یابد

ProxyEndpoint و TargetEndpoint خط لوله ای را برای پردازش پیام درخواست و پاسخ تعریف می کنند. خط لوله پردازش از یک جریان درخواست و یک جریان پاسخ تشکیل شده است. هر جریان درخواست و جریان پاسخ به یک PreFlow، یک یا چند جریان اختیاری «شرطی» یا «نام» و یک PostFlow تقسیم می‌شود.

  • PreFlow: همیشه اجرا می شود. قبل از هر جریان شرطی اجرا می شود.
  • PostFlow: همیشه اجرا می شود. پس از هر جریان شرطی اجرا می شود.

علاوه بر این، می توانید یک PostClientFlow را به ProxyEndpoint اضافه کنید که پس از بازگشت پاسخ به برنامه مشتری درخواست کننده اجرا می شود. فقط خط مشی MessageLogging و Google Stackdriver Logging Extension را می توان به این جریان پیوست. 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 Flow ها را به ترتیب زیر اجرا می کند:

خط لوله درخواست:

  1. درخواست پراکسی PreFlow
  2. جریانهای مشروط درخواست پروکسی (اختیاری)
  3. درخواست پروکسی PostFlow
  4. PreFlow درخواست هدف
  5. جریانهای مشروط درخواست هدف (اختیاری)
  6. درخواست هدف PostFlow

خط لوله پاسخ:

  1. پاسخ هدف PreFlow
  2. جریانهای شرطی پاسخ هدف (اختیاری)
  3. پاسخ هدف PostFlow
  4. PreFlow پاسخ پروکسی
  5. جریانهای مشروط پاسخ پراکسی (اختیاری)
  6. پاسخ پروکسی PostFlow
  7. پاسخ PostClientFlow (اختیاری)

فقط جریان‌هایی که پیوست‌های خط‌مشی دارند باید در پیکربندی‌های ProxyEndpoint یا TargetEndpoint پیکربندی شوند. PreFlow و PostFlow فقط باید در یک پیکربندی ProxyEndpoint یا TargetEndpoint مشخص شوند که یک خط مشی باید در طول پردازش PreFlow یا PostFlow اعمال شود.

برخلاف جریان‌های شرطی، ترتیب عناصر PreFlow و PostFlow مهم نیست - پراکسی API همیشه هر کدام را در نقطه مناسبی از خط لوله اجرا می‌کند، صرف نظر از اینکه کجا در پیکربندی نقطه پایانی ظاهر می‌شوند.

جریان های مشروط

ProxyEndpoints و TargetEndpoints از تعداد نامحدودی از جریان‌های شرطی پشتیبانی می‌کنند (همچنین به عنوان «جریان‌های نام‌گذاری شده» نیز شناخته می‌شوند.

پروکسی API شرایط مشخص شده در جریان شرطی را آزمایش می کند و در صورت برقراری شرایط، مراحل پردازش در جریان شرطی توسط پراکسی API اجرا می شود. اگر شرط برآورده نشود، مراحل پردازش در جریان شرطی دور می زند. جریان های شرطی به ترتیب تعریف شده در پراکسی API ارزیابی می شوند و اولین موردی که شرط آن برآورده شده است اجرا می شود.

با تعریف جریان های شرطی، توانایی اعمال مراحل پردازش در یک پروکسی API بر اساس موارد زیر را به دست می آورید:

  • درخواست URI
  • فعل HTTP (GET/PUT/POST/DELETE)
  • مقدار پارامتر پرس و جو، هدر و پارامتر فرم
  • بسیاری از انواع دیگر شرایط

به عنوان مثال، جریان شرطی زیر مشخص می کند که تنها زمانی اجرا می شود که مسیر منبع درخواست /accesstoken باشد. هر درخواست ورودی با مسیر /accesstoken باعث می شود که این جریان به همراه هر سیاستی که به جریان متصل است اجرا شود. اگر مسیر درخواست شامل پسوند /accesstoken نباشد، جریان اجرا نمی‌شود (اگرچه ممکن است یک جریان شرطی دیگر).

<Flows>
  <Flow name="TokenEndpoint">
    <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
    <Request>
      <Step>
        <Name>GenerateAccessToken</Name>
      </Step>
    </Request> 
  </Flow>
</Flows>   

عناصر پیکربندی جریان

نام توضیحات پیش فرض مورد نیاز؟
Flow یک خط لوله پردازش درخواست یا پاسخ که توسط یک ProxyEndpoint یا TargetEndpoint تعریف شده است
Name نام منحصر به فرد جریان. N/A بله
Condition یک عبارت شرطی که روی یا تعداد بیشتری از متغیرها را به درست یا نادرست ارزیابی می کند. همه Flow ها به غیر از انواع PreFlow و PostFlow از پیش تعریف شده باید یک شرط برای اجرای خود تعریف کنند. N/A بله
Request خط لوله مرتبط با پردازش پیام درخواست N/A خیر
Response خط لوله مرتبط با پردازش پیام پاسخ N/A خیر

پردازش مرحله ای

ترتیب متوالی جریان های شرطی توسط Apigee Edge اعمال می شود. جریان های شرطی از بالا به پایین اجرا می شوند. اولین جریان شرطی که شرط آن true ارزیابی می شود اجرا می شود و فقط یک جریان شرطی اجرا می شود.

به عنوان مثال، در پیکربندی Flow زیر، هر درخواست ورودی که شامل پسوند مسیر /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، به محیط، به سطح سازمان حل می کند.

یک منبع ذخیره شده در سطح سازمان می تواند توسط سیاست ها در هر محیطی ارجاع داده شود. منبعی که در سطح محیط ذخیره شده است را می توان توسط سیاست های موجود در آن محیط ارجاع داد. منبعی که در سطح پراکسی API ذخیره شده است را فقط می توان توسط سیاست های موجود در آن پراکسی API ارجاع داد.