شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
جریانها (Flows) بلوکهای سازندهی اصلی پروکسیهای API هستند. جریانها (Flows) با پیکربندی ترتیب اجرای سیاستها و کدها توسط یک پروکسی API، شما را قادر میسازند تا رفتار یک API را برنامهریزی کنید.
برای مرور مفهومی جریانها، به بخش «کنترل نحوه اجرای پروکسی با جریانها» مراجعه کنید.
این مبحث نحوه ایجاد جریانهای شرطی و افزودن منطق (سیاستها) به جریانها در سطح بالا را شرح میدهد. هنر ایجاد شرطها شامل جزئیات بیشتری نسبت به آنچه در این مبحث پوشش داده شده است، میشود. برای جزئیات بیشتر، به «مروری بر متغیرهای جریان» و «شرطها با متغیرهای جریان» مراجعه کنید.
اتصال سیاستها به جریانها
اج با انواع مختلفی از سیاستهای از پیش تعریفشده برای پیادهسازی امنیت، مدیریت ترافیک و دستکاری پیامها ارائه میشود. علاوه بر این، سیاستها به شما امکان میدهند کد سفارشی خود را برای سفارشیسازی کامل پردازش پیام اضافه کنید.
برای مثال:
- یک سیاست امنیتی OAuth را به درخواست PreFlow مربوط به ProxyEndpoint ضمیمه کنید. از آنجا که درخواست PreFlow مربوط به ProxyEndpoint اولین جریان در خط لوله است، در صورت نقض سیاستهای امنیتی خود، میتوانید فوراً درخواست را رد کنید.
- یک سیاست تبدیل JSON به XML را به PostFlow پاسخ TargetEndpoint ضمیمه کنید تا پاسخ از JSON به XML تبدیل شود.
- یک سیاست جاوا اسکریپت را به یک جریان شرطی از ProxyEndpoint متصل کنید تا کد جاوا اسکریپت را برای پردازش درخواست اجرا کند.
پس از ایجاد یک جریان شرطی، برای پیوست کردن سیاست در دسترس است. با انتخاب جریان، روی نماد + مرحله در نمودار درخواست یا پاسخ کلیک کنید تا یک سیاست جدید یا موجود به جریان اضافه شود.


با پیوست کردن این سیاست به جریان انتخابشده، شما پروکسی API را طوری پیکربندی میکنید که سیاست سهمیهبندی را فقط برای درخواستهای ارسالشده به آن جریان URI و ترکیب فعل اعمال کند. برای مثال، اگر این سیاست را در درخواست به جریان یادگیری پیوست کنید، XML زیر در نمای کد ویرایشگر پروکسی ایجاد میشود:
<ProxyEndpoint name="default">
...
<Flow name="issue">
<Description/>
<Request>
<Step>
<Name>Quota-2</Name>
</Step>
</Request>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
</Flow>
...
</ProxyEndpoint>در این پیکربندی، اگر یک درخواست GET با الگوی URI ... /issue/** (/issue/ با هر چیزی در URI بعد از آخرین اسلش /) به پروکسی API برسد، سهمیهبندی روی آن فراخوانی API اعمال میشود.
درباره جریانهای شرطی
هر سیاستی که به PreFlow یا PostFlow متصل باشد، همیشه اجرا میشود. با این حال، سیاستهای موجود در یک جریان شرطی فقط در صورتی اجرا میشوند که شرط جریان درست باشد.
در طول پردازش یک درخواست و پاسخ، فقط یک جریان شرطی در هر بخش اجرا میشود - اولین جریانی که شرط آن درست ارزیابی شود. این بدان معناست که میتوانید یک جریان شرطی را به عنوان بخشی از هر یک از موارد زیر اجرا کنید:
- خط لوله درخواست ProxyEndpoint
- خط لوله درخواست TargetEndpoint
- خط لوله پاسخ ProxyEndpoint
- خط لوله پاسخ TargetEndpoint
ویدیو: برای کسب اطلاعات بیشتر در مورد جریانهای شرطی، یک ویدیوی کوتاه تماشا کنید.
برای مثال، تعریف ProxyEndpoint زیر یک جریان شرطی را نشان میدهد که توسط ProxyEndpoint روی هر درخواست HTTP GET به پروکسی API اجرا میشود:
<ProxyEndpoint name="default">
<PreFlow>
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Condition>request.verb="GET"</Condition>
<Request/>
<Response/>
</Flow>
</Flows>
<PostFlow>
<Request/>
<Response/>
</PostFlow>
...
</ProxyEndpoint>توجه داشته باشید که شرط به متغیر جریان request.verb ارجاع میدهد. یک متغیر جریان، ارجاعهایی نامگذاری شده است که اطلاعات وضعیت مرتبط با یک تراکنش API پردازش شده توسط Edge را در خود نگه میدارد. Edge متغیرهای وضعیت زیادی را تعریف میکند که میتوانید به آنها ارجاع دهید.
سرویسهای RESTful مجموعهای از منابع API هستند. یک منبع API یک قطعه مسیر URI است که موجودیتی را شناسایی میکند که توسعهدهندگان میتوانند با فراخوانی API شما به آن دسترسی پیدا کنند. برای مثال، اگر backend سرویس شما گزارشهای آب و هوا و پیشبینیهای آب و هوا را ارائه میدهد، API شما ممکن است دو جریان شرطی را تعریف کند که به آن منابع API نگاشت میشوند: /reports و /forecasts . هنگامی که یک فراخوانی API شامل یکی از این منابع در URL باشد، شرط به صورت true ارزیابی میشود و منطق متصل به جریان شرطی اجرا میشود.
توسعهدهندگان برنامه سپس با ارسال درخواست به یک URL به شکل زیر به منابع شما دسترسی پیدا میکنند:
http://myAPIs.myCo.com/weather/reports
یا:
http://myAPIs.myCo.com/weather/forecasts
در یک پروکسی API، میتوانید یک جریان شرطی تعریف کنید که مربوط به یک منبع خاص باشد:
<ProxyEndpoint name="default">
<PreFlow>
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
<Request/>
<Response/>
</Flow>
<Flow name="Flow-2">
<Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
<Request/>
<Response/>
</Flow>
</Flows>
<PostFlow>
<Request/>
<Response/>
</PostFlow>
...
</ProxyEndpoint> در این مثال، شما به متغیر جریان proxy.pathsuffix ارجاع میدهید که شامل بخش پسوند URL مورد استفاده برای دسترسی به پروکسی API است. سپس میتوانید سیاستهای مختلفی را برای هر منبع به جریان شرطی پیوست کنید.
افزودن یک جریان شرطی
در این مثال کوتاه، شما جریانی را تنظیم میکنید که فقط زمانی اجرا میشود که پیام درخواست از نوع HTTP GET باشد.
برای افزودن یک جریان شرطی، برگه توسعه را در سازنده پروکسی API انتخاب کنید.

روی آیکون + در نقطه پایانی مورد نظر کلیک کنید.

فرم New Conditional Flow به شما امکان میدهد تا جریان را نامگذاری کرده و یک شرط را پیکربندی کنید. در مثال زیر، یک شرط ساده اضافه میکنید که HTTP پیام درخواست برای یک فعل GET (برخلاف PUT ، POST و غیره) را در هر URI بعد از مسیر پایه ارزیابی میکند.

(یاد بگیرید که چگونه در متغیرها و شرطهای Flow، عبارات شرطی بسازید.)
جریان جدید، با نام Flow-1 ، اکنون در منوی Navigator ظاهر میشود.

اکنون پیکربندی XML مربوط به ProxyEndpoint را مشاهده کنید. در منوی Navigator ، گزینه Flow-1 را انتخاب کنید.
پیکربندی زیر را مشاهده خواهید کرد.
<PreFlow name="PreFlow">
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Request/>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
</Flow>
</Flows>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>مراحل بعدی
مباحث زیر جزئیات بیشتری در مورد ساخت شرطها و استفاده از متغیرها ارائه میدهند: