خط مشی PythonScript

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

چه

سیاست اسکریپت پایتون به شما امکان می‌دهد قابلیت‌های پایتون سفارشی‌شده را به جریان پروکسی API خود اضافه کنید، به‌ویژه زمانی که قابلیت‌های مورد نیاز شما فراتر از آن چیزی است که سیاست‌های پیش‌فرض Edge ارائه می‌دهند.

پشتیبانی از زبان پایتون از طریق جایتون نسخه ۲.۵.۲ ارائه می‌شود. کتابخانه‌های شخص ثالثی که اضافه می‌کنید باید «پایتون خالص» باشند (فقط در پایتون پیاده‌سازی شده باشند). برای اطلاعات بیشتر در مورد افزودن کتابخانه‌ها، به فایل‌های منبع مراجعه کنید.

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

نمونه‌ها

سیاست و اسکریپت پایتون

سیاست اسکریپت پایتون

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">
        <DisplayName>Python-1</DisplayName>
        <ResourceURL>py://myscript.py</ResourceURL>
</Script>

در این مثال، عنصر ResourceURL منبع اسکریپت پایتون مربوطه را مشخص می‌کند.

اسکریپت پایتون

این نشان می‌دهد که چه چیزهایی را می‌توانید در خود اسکریپت پایتون بگنجانید.

import base64

username = flow.getVariable("request.formparam.client_id")
password = flow.getVariable("request.formparam.client_secret")

base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authorization = "Basic "+base64string

flow.setVariable("authorizationParam",authorization)

مرجع عنصر

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">
    <DisplayName>Python-1</DisplayName>
    <ResourceURL>py://myscript.py</ResourceURL>
    <IncludeURL>py://myscript_dependency.py</IncludeURL>
</Script>

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

صفت توضیحات پیش فرض حضور
name

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

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

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

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

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

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

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

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

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

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

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

عنصر <DisplayName>

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

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

N/A

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

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

عنصر <ResourceURL>

این عنصر فایل اصلی پایتون را که در جریان API اجرا خواهد شد، مشخص می‌کند. می‌توانید این فایل را در محدوده پروکسی API (در مسیر /apiproxy/resources/py در بسته پروکسی API یا در بخش اسکریپت‌ها از پنل Navigator ویرایشگر پروکسی API) یا در محدوده‌های سازمان یا محیط برای استفاده مجدد در چندین پروکسی API، همانطور که در فایل‌های منبع توضیح داده شده است، ذخیره کنید. کد شما می‌تواند از اشیاء، متدها و ویژگی‌های مدل شیء جاوا اسکریپت استفاده کند.

<ResourceURL>py://myscript.py</ResourceURL>
پیش‌فرض: هیچکدام
حضور: مورد نیاز
نوع: رشته

عنصر <IncludeURL>

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

بیش از یک منبع وابستگی پایتون را با عناصر <IncludeURL> اضافی وارد کنید.

<IncludeURL>py://myscript_dependency.py</IncludeURL>
پیش‌فرض: هیچکدام
حضور: اختیاری
نوع: رشته

کدهای خطا

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

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

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

کد خطا وضعیت HTTP علت رفع کنید
steps.script.ScriptEvaluationFailed 500 خط مشی PythonScript می تواند چندین نوع مختلف از خطاهای ScriptExecutionFailed را ایجاد کند. انواع خطاهای رایج شامل NameError و ZeroDivisionError هستند.

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

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت رفع کنید
InvalidResourceUrlFormat اگر قالب URL منبع مشخص شده در عنصر <ResourceURL> یا <IncludeURL> خط مشی PythonScript نامعتبر باشد، در این صورت استقرار پروکسی API با شکست مواجه می شود.
InvalidResourceUrlReference اگر عناصر <ResourceURL> یا <IncludeURL> به یک فایل PythonScript اشاره می کنند که وجود ندارد، در این صورت استقرار پروکسی API با شکست مواجه می شود. فایل منبع ارجاع شده باید در سطح پروکسی API، محیط یا سطح سازمان باشد.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را در زمان اجرا ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.

متغیرها کجا مثال
fault.name=" fault_name " fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. fault.name Matches "ScriptExecutionFailed"
pythonscript. policy_name .failed policy_name نام سیاستی است که توسط کاربر مشخص شده است که خطا را ایجاد کرده است. pythonscript.PythonScript-1.failed = true

نمونه پاسخ خطا

{
  "fault": {
    "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"",
    "detail": {
      "errorcode": "steps.script.ScriptExecutionFailed"
    }
  }
}

مثال قانون خطا

<FaultRule name="PythonScript Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition>
    </Step>
    <Condition>(pythonscript.PythonScript-1.failed = true) </Condition>
</FaultRule>

مباحث مرتبط

،

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

چه

سیاست اسکریپت پایتون به شما امکان می‌دهد قابلیت‌های پایتون سفارشی‌شده را به جریان پروکسی API خود اضافه کنید، به‌ویژه زمانی که قابلیت‌های مورد نیاز شما فراتر از آن چیزی است که سیاست‌های پیش‌فرض Edge ارائه می‌دهند.

پشتیبانی از زبان پایتون از طریق جایتون نسخه ۲.۵.۲ ارائه می‌شود. کتابخانه‌های شخص ثالثی که اضافه می‌کنید باید «پایتون خالص» باشند (فقط در پایتون پیاده‌سازی شده باشند). برای اطلاعات بیشتر در مورد افزودن کتابخانه‌ها، به فایل‌های منبع مراجعه کنید.

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

نمونه‌ها

سیاست و اسکریپت پایتون

سیاست اسکریپت پایتون

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">
        <DisplayName>Python-1</DisplayName>
        <ResourceURL>py://myscript.py</ResourceURL>
</Script>

در این مثال، عنصر ResourceURL منبع اسکریپت پایتون مربوطه را مشخص می‌کند.

اسکریپت پایتون

این نشان می‌دهد که چه چیزهایی را می‌توانید در خود اسکریپت پایتون بگنجانید.

import base64

username = flow.getVariable("request.formparam.client_id")
password = flow.getVariable("request.formparam.client_secret")

base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authorization = "Basic "+base64string

flow.setVariable("authorizationParam",authorization)

مرجع عنصر

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">
    <DisplayName>Python-1</DisplayName>
    <ResourceURL>py://myscript.py</ResourceURL>
    <IncludeURL>py://myscript_dependency.py</IncludeURL>
</Script>

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

صفت توضیحات پیش فرض حضور
name

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

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

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

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

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

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

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

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

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

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

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

عنصر <DisplayName>

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

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

N/A

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

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

عنصر <ResourceURL>

این عنصر فایل اصلی پایتون را که در جریان API اجرا خواهد شد، مشخص می‌کند. می‌توانید این فایل را در محدوده پروکسی API (در مسیر /apiproxy/resources/py در بسته پروکسی API یا در بخش اسکریپت‌ها از پنل Navigator ویرایشگر پروکسی API) یا در محدوده‌های سازمان یا محیط برای استفاده مجدد در چندین پروکسی API، همانطور که در فایل‌های منبع توضیح داده شده است، ذخیره کنید. کد شما می‌تواند از اشیاء، متدها و ویژگی‌های مدل شیء جاوا اسکریپت استفاده کند.

<ResourceURL>py://myscript.py</ResourceURL>
پیش‌فرض: هیچکدام
حضور: مورد نیاز
نوع: رشته

عنصر <IncludeURL>

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

بیش از یک منبع وابستگی پایتون را با عناصر <IncludeURL> اضافی وارد کنید.

<IncludeURL>py://myscript_dependency.py</IncludeURL>
پیش‌فرض: هیچکدام
حضور: اختیاری
نوع: رشته

کدهای خطا

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

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

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

کد خطا وضعیت HTTP علت رفع کنید
steps.script.ScriptEvaluationFailed 500 خط مشی PythonScript می تواند چندین نوع مختلف از خطاهای ScriptExecutionFailed را ایجاد کند. انواع خطاهای رایج شامل NameError و ZeroDivisionError هستند.

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

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت رفع کنید
InvalidResourceUrlFormat اگر قالب URL منبع مشخص شده در عنصر <ResourceURL> یا <IncludeURL> خط مشی PythonScript نامعتبر باشد، در این صورت استقرار پروکسی API با شکست مواجه می شود.
InvalidResourceUrlReference اگر عناصر <ResourceURL> یا <IncludeURL> به یک فایل PythonScript اشاره می کنند که وجود ندارد، در این صورت استقرار پروکسی API با شکست مواجه می شود. فایل منبع ارجاع شده باید در سطح پروکسی API، محیط یا سطح سازمان باشد.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را در زمان اجرا ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.

متغیرها کجا مثال
fault.name=" fault_name " fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. fault.name Matches "ScriptExecutionFailed"
pythonscript. policy_name .failed policy_name نام سیاستی است که توسط کاربر مشخص شده است که خطا را ایجاد کرده است. pythonscript.PythonScript-1.failed = true

نمونه پاسخ خطا

{
  "fault": {
    "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"",
    "detail": {
      "errorcode": "steps.script.ScriptExecutionFailed"
    }
  }
}

مثال قانون خطا

<FaultRule name="PythonScript Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition>
    </Step>
    <Condition>(pythonscript.PythonScript-1.failed = true) </Condition>
</FaultRule>

مباحث مرتبط