شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
از خط مشی FlowCallout برای فراخوانی یک جریان مشترک از یک پروکسی API یا یک جریان مشترک دیگر استفاده کنید.
در یک جریان مشترک، دنبالهای از مراحل را ایجاد میکنید که میتوانید در زمان اجرا از مکانهای مختلف دوباره استفاده کنید. این مراحل بهعنوان خطمشی، مانند یک پروکسی API، اجرا میشوند. خطمشی FlowCallout راهی برای فراخوانی جریان مشترک از پراکسیهای API و سایر جریانهای مشترک به شما میدهد. مانند یک فراخوانی تابع در یک زبان برنامه نویسی سنتی عمل می کند.
- به عنوان مثال، تصور کنید که یک جریان مشترک با ویژگیهای امنیتی مانند تأیید کلید API، اعتبارسنجی توکن OAuth و حفاظت از عبارت منظم ایجاد کردهاید. این جریان مشترک نشان دهنده قرارداد شما برای راهی برای بررسی درخواست های ورودی است. با استفاده از خطمشیهای FlowCallout، میتوانید آن جریان مشترک را از چندین پراکسی API فراخوانی کنید.
- شما می توانید با اجرای یک خط مشی FlowCallout از درون یک جریان مشترک، یک جریان مشترک را از دیگری فراخوانی کنید.
نمونه ها
کلید API را در جریان مشترک تأیید کنید
در این مثال از یک جریان مشترک برای انجام وظایف رایج مرتبط با امنیت استفاده می شود. در اینجا جریان مشترک یک کلید API را تأیید می کند. پراکسی های API و سایر جریان های مشترک می توانند از خط مشی FlowCallout برای برقراری تماس با این جریان مشترک استفاده کنند.
تعریف جریان مشترک زیر شامل یک خط مشی Verify-API-Key
است که زمانی اجرا می شود که جریان مشترک از یک خط مشی FlowCallout در یک پراکسی API فراخوانی شود.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>Verify-API-Key</Name> </Step> </SharedFlow>
خط مشی VerifyAPIKey
در جریان مشترک قبلی، مقدار کلید را بازیابی می کند و آن را تأیید می کند.
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key"> <DisplayName>Verify API Key</DisplayName> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
خط مشی FlowCallout زیر که در یک پراکسی API استفاده میشود، جریان مشترک قبلی را برای تأیید کلید API فراخوانی میکند. بسته جریان مشترک verify-apikey-shared
(در اینجا نشان داده نشده است) جریان مشترک را به روشی که یک بسته APIProxy یک پروکسی را پیکربندی می کند، پیکربندی می کند.
<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout"> <DisplayName>Auth Flow Callout</DisplayName> <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle> </FlowCallout>
پارامترها را به یک جریان مشترک منتقل کنید
این مثال نحوه انتقال پارامترها از یک خط مشی FlowCallout به یک جریان مشترک را نشان می دهد. در اینجا، یک خط مشی FlowCallout یک جریان مشترک را فراخوانی می کند که برای انجام توابع رایج مدیریت رشته طراحی شده است. جریان مشترک شامل جاوا اسکریپت است که ورودی آن، حروف کوچک ورودی آن یا هر دو را به هم متصل می کند. خط مشی FlowCallout پارامترهایی را تعریف می کند که ورودی رشته، خروجی و کارهایی که باید با ورودی انجام شود را مشخص می کند.
خط مشی
String-Handler
FlowCallout جریان مشترک را فراخوانی میکند، پارامترهایی را ارسال میکند که متغیر را برای ذخیره خروجی جریان مشترک، عملیات جریان مشترک و ورودی مورد استفاده (در اینجا، یک رشته واقعی، اما میتواند یک متغیر جریان نیز باشد، مشخص میکند. ). عناصرParameter
نام و مقادیر متغیرها را برای ایجاد زمان اجرا مشخص می کنند. جریان مشترک می تواند این متغیرها را برای استفاده در کد خود بازیابی کند.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="operations">concatenate tolowercase</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
جریان مشترک
default
زیر شامل یک خطمشی جاوا اسکریپتSharedStringFunctions
است که زمانی اجرا میشود که جریان مشترک از یک خطمشی FlowCallout فراخوانی شود.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
در جریان مشترک، خط مشی جاوا اسکریپت
SharedStringFunctions
زیر فایل جاوا اسکریپت SharedStringFunctions.js را با کدی که باید اجرا شود مشخص می کند.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="SharedStringFunctions"> <DisplayName>SharedStringFunctions</DisplayName> <Properties/> <ResourceURL>jsc://SharedStringFunctions.js</ResourceURL> </Javascript>
جاوا اسکریپت زیر، SharedStringFunctions.js، از خط مشی جاوا اسکریپت
SharedStringFunctions
اجرا می شود. این اسکریپت مقادیر متغیرهای ایجاد شده از عناصرParameter
سیاست FlowCallout را بازیابی می کند.// Input value from the calling API proxy. var handledString = context.getVariable("input"); // Variable to use for output from this script. var outputVariable = context.getVariable("outputVariable"); // A space-separated list of things to do to the input string. // Convert to lower case to handle unintentional capitals in configuration. var operation = context.getVariable("operations").toLowerCase(); // If "lowercase" was given as an operation, convert the input to lowercase. if (operation.includes("tolowercase")) { handledString = handledString.toLowerCase(); } // If "concatenate" was given as an operation, concatenate the input. if (operation.includes("concatenate")) { handledString = handledString.replace(/\s+/g, ''); } // Assign the resulting string to the output variable specified by // the calling API proxy. context.setVariable(outputVariable, handledString);
- اجرا از خط مشی جاوا اسکریپت به جریان مشترک و سپس به خط مشی FlowCallout در پراکسی API اصلی بازمی گردد.
مرجع عنصر
در زیر عناصر و ویژگی هایی وجود دارد که می توانید در این خط مشی پیکربندی کنید:
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1"> <DisplayName>Custom label used in UI</DisplayName> <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle> </FlowCallout>
ویژگی های <FlowCallout>
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:
صفت | توضیحات | پیش فرض | حضور |
---|---|---|---|
name | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name
برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
---|---|
حضور | اختیاری |
تایپ کنید | رشته |
عنصر <SharedFlowBundle>
نام جریان مشترک برای فراخوانی را مشخص می کند. مقدار این عنصر باید با مقدار ویژگی نام عنصر SharedFlowBundle هدف یکسان باشد.
<SharedFlowBundle/>
در سادهترین مثال، نام جریان مشترکی که فراخوانی میشود را به عنوان مقداری برای این عنصر میدهید. یعنی مقدار این عنصر باید با مقدار مشخصه name
جریان مشترک یکسان باشد.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
پیش فرض | N/A |
حضور | مورد نیاز. |
تایپ کنید | N/A |
صفات
هیچ کدام.
عنصر <Parameter>
پارامتر و مقدار (یا منبع مقدار) را مشخص می کند تا به عنوان متغیر به جریان مشترک فراخوانی شده توسط این خط مشی منتقل شود.
با استفاده از یک پارامتر، می توانید مقداری (یا متغیری حاوی یک مقدار) را مشخص کنید که باید به جریان مشترک فراخوانی شده توسط سیاست ارسال شود. این از نظر مفهومی شبیه به تعیین یک پارامتر در فراخوانی تابع است. مانند یک پارامتر تابع، مقدار پارامتر FlowCallout می تواند بر اساس زمینه فراخوانی جریان مشترک متفاوت باشد.
پارامترهای FlowCallout فقط در طول اجرای جریان مشترک قابل مشاهده هستند.
نحو
می توانید از این عنصر با هر یک از شکل های نحو زیر استفاده کنید. توجه داشته باشید که در جایی که از یک مقدار تحت اللفظی استفاده می کنید، فرمت مقداری که مشخص می کنید به کد مصرف کننده آن بستگی دارد.
<!- A literal value in an attribute. --/> <Parameter name="parameter-name" value='parameter-value' /> <!- A reference to a variable in an attribute. --/> <Parameter name="parameter-name" ref='source-variable-name' /> <!- A literal value in the element content. --/> <Parameter name="parameter-name">parameter-value</Parameter> <!- An reference to an attribute in the element content. --/> <Parameter name="parameter-name">{source-variable-name}</Parameter>
مثال
این سیاست String-Handler
FlowCallout پارامترهایی را ارسال می کند که مشخص می کند خروجی جریان مشترک کجا ذخیره شود و از چه ورودی استفاده شود. عناصر Parameter
نام و مقادیر متغیرها را برای ایجاد زمان اجرا مشخص می کنند. جریان مشترک می تواند این متغیرها را برای استفاده در کد خود بازیابی کند.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
پیش فرض | N/A |
حضور | مورد نیاز. |
تایپ کنید | N/A |
صفات
صفت | توضیحات | پیش فرض | حضور | تایپ کنید |
---|---|---|---|---|
نام | نام متغیر زمان اجرا برای ایجاد با این پارامتر. | هیچ کدام. | مورد نیاز. | رشته | رجوع کنید | متغیر the حاوی مقدار مورد استفاده در زمان اجرا است. اگر مقدار تحت اللفظی را برای استفاده تعیین می کنید، این ویژگی را حذف کنید. | هیچ کدام. | اختیاری. | رشته |
ارزش | مقدار مورد استفاده در متغیر زمان اجرا ایجاد شده با این پارامتر. اگر نام متغیری را مشخص میکنید که باید منبع مقدار باشد، این ویژگی را حذف کنید. | هیچ کدام. | اختیاری. | رشته |
عنصر <Parameters>
مجموعه ای از عناصر <Parameter> را مشخص می کند تا به عنوان متغیر به جریان مشترک فراخوانی شده توسط این خط مشی منتقل شوند.
نحو
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
پیش فرض | N/A |
حضور | اختیاری. |
تایپ کنید | N/A |
صفات
هیچ کدام.
طرحواره ها
متغیرهای جریان
متغیرهای جریان، رفتار پویای خطمشیها و جریانها را در زمان اجرا، بر اساس سرصفحههای HTTP، محتوای پیام یا زمینه جریان، فعال میکنند. برای اطلاعات بیشتر در مورد متغیرهای جریان، به مرجع متغیرها مراجعه کنید.
متغیر | توضیحات |
---|---|
| محدوده : در طول اجرای جریان مشترک مقدار ویژگی نام جریان مشترک. |
| محدوده : در حین اجرای جریان مشترک متصل به قلاب جریان. نام قلاب جریان. |
مرجع خطا
این بخش کدهای خطا و پیامهای خطایی را که برگردانده میشوند و متغیرهای خطا را که توسط Edge تنظیم میشوند، هنگامی که این خطمشی خطا را راهاندازی میکند، توضیح میدهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.
خطاهای زمان اجرا
این خطاها ممکن است هنگام اجرای سیاست رخ دهند.
کد خطا | وضعیت HTTP | علت | ثابت |
---|---|---|---|
flow.SharedFlowNotFound | 500 | یا جریان مشترک وجود ندارد، یا جریان مشترک وجود دارد اما مستقر نشده است. | build |
خطاهای استقرار
N/A
موضوعات مرتبط
- ایجاد جریان های مشترک: جریان های مشترک قابل استفاده مجدد
- اجرای جریان های مشترک در چندین پراکسی: پیوست کردن یک جریان مشترک با استفاده از یک قلاب جریان