خط مشی FlowCallout

شما در حال مشاهده مستندات 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 پارامترهایی را تعریف می‌کند که ورودی رشته، خروجی و نحوه‌ی کار با ورودی را مشخص می‌کنند.

  1. سیاست FlowCallout مربوط به String-Handler ، جریان مشترک را فراخوانی می‌کند و پارامترهایی را که متغیر مورد نظر برای ذخیره خروجی جریان مشترک، عملیات جریان مشترک مورد استفاده و ورودی مورد استفاده را مشخص می‌کنند، ارسال می‌کند (در اینجا، یک رشته تحت‌اللفظی، اما می‌تواند یک متغیر جریان نیز باشد). عناصر 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>
  2. جریان اشتراکی default زیر شامل یک سیاست جاوااسکریپت SharedStringFunctions است که هنگام فراخوانی جریان اشتراکی از یک سیاست FlowCallout اجرا می‌شود.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. در جریان مشترک، سیاست جاوا اسکریپت 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>
  4. کد جاوا اسکریپت زیر، 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);
  5. اجرا از سیاست جاوا اسکریپت، به جریان مشترک و سپس به سیاست 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

نام داخلی سیاست. مقدار مشخصه name می تواند شامل حروف، اعداد، فاصله، خط تیره، زیرخط و نقطه باشد. این مقدار نمی تواند بیش از 255 کاراکتر باشد.

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

N/A مورد نیاز
continueOnError

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

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

نادرست اختیاری
enabled

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

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

درست است اختیاری
async

این ویژگی منسوخ شده است.

نادرست منسوخ شده است

عنصر <DisplayName>

علاوه بر ویژگی name برای برچسب‌گذاری خط‌مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.

<DisplayName>Policy Display Name</DisplayName>
پیش فرض

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی name خط مشی استفاده می شود.

حضور اختیاری
تایپ کنید رشته

عنصر <SharedFlowBundle>

نام جریان مشترکی را که باید فراخوانی شود، مشخص می‌کند. مقدار این عنصر باید با مقدار ویژگی نام عنصر هدف SharedFlowBundle یکسان باشد.

<SharedFlowBundle/>

در ساده‌ترین مثال، شما نام جریان مشترکی که فراخوانی می‌شود را به عنوان مقداری برای این عنصر تعیین می‌کنید. یعنی مقدار این عنصر باید با مقدار ویژگی name جریان مشترک یکسان باشد.

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
پیش‌فرض ناموجود
حضور

الزامی است.

نوع ناموجود

ویژگی‌ها

هیچ کدام.

عنصر <پارامتر>

یک پارامتر و مقدار (یا منبع مقدار) را برای ارسال به عنوان متغیر به جریان مشترکی که توسط این خط‌مشی فراخوانی می‌شود، مشخص می‌کند.

با استفاده از یک پارامتر، می‌توانید یک مقدار (یا یک متغیر حاوی یک مقدار) را مشخص کنید که باید به جریان مشترک فراخوانی شده توسط سیاست ارسال شود. این از نظر مفهومی شبیه به تعیین پارامتر در یک فراخوانی تابع است. همانند پارامتر تابع، مقدار پارامتر 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>
پیش‌فرض ناموجود
حضور

الزامی است.

نوع ناموجود

ویژگی‌ها

ویژگی توضیحات پیش‌فرض حضور نوع
نام نام متغیر زمان اجرا که با این پارامتر ایجاد می‌شود. هیچ کدام. الزامی است. رشته
مرجع

متغیر the حاوی مقداری است که در زمان اجرا استفاده می‌شود. اگر می‌خواهید یک مقدار تحت‌اللفظی برای استفاده مشخص کنید، این ویژگی را حذف کنید.

هیچ کدام. اختیاری. رشته
ارزش مقداری که در متغیر زمان اجرا ایجاد شده با این پارامتر استفاده می‌شود. اگر نام متغیری را مشخص می‌کنید که باید منبع مقدار باشد، این ویژگی را حذف کنید. هیچ کدام. اختیاری. رشته

عنصر <پارامترها>

مجموعه عناصر <Parameter> را برای انتقال به عنوان متغیر به جریان مشترکی که توسط این خط‌مشی فراخوانی می‌شود، مشخص می‌کند.

نحو

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
پیش‌فرض ناموجود
حضور

اختیاری.

نوع ناموجود

ویژگی‌ها

هیچ کدام.

طرحواره‌ها

متغیرهای جریان

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

متغیر توضیحات

apigee.edge.sharedflow.name

محدوده : در طول اجرای جریان مشترک
نوع : رشته‌ای
اجازه : خواندن

مقدار ویژگی نام جریان مشترک.

apigee.edge.flowhook.name

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

نام قلاب جریان.

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطا را که توسط Edge تنظیم می‌شوند، هنگامی که این خط‌مشی خطا را راه‌اندازی می‌کند، توضیح می‌دهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای سیاست رخ دهند.

کد خطا وضعیت HTTP علت ثابت
flow.SharedFlowNotFound 500 یا جریان مشترک وجود ندارد، یا جریان مشترک وجود دارد اما مستقر نشده است.

خطاهای استقرار

N/A

مباحث مرتبط