شما در حال مشاهده مستندات 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 | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
|---|---|
| حضور | اختیاری |
| تایپ کنید | رشته |
عنصر <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 هستند. | build |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.
| نام خطا | علت | رفع کنید |
|---|---|---|
InvalidResourceUrlFormat | اگر قالب URL منبع مشخص شده در عنصر <ResourceURL> یا <IncludeURL> خط مشی PythonScript نامعتبر باشد، در این صورت استقرار پروکسی API با شکست مواجه می شود. | build |
InvalidResourceUrlReference | اگر عناصر <ResourceURL> یا <IncludeURL> به یک فایل PythonScript اشاره می کنند که وجود ندارد، در این صورت استقرار پروکسی API با شکست مواجه می شود. فایل منبع ارجاع شده باید در سطح پروکسی API، محیط یا سطح سازمان باشد. | build |
متغیرهای خطا
این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را در زمان اجرا ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.
| متغیرها | کجا | مثال |
|---|---|---|
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 | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
|---|---|
| حضور | اختیاری |
| تایپ کنید | رشته |
عنصر <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 هستند. | build |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.
| نام خطا | علت | رفع کنید |
|---|---|---|
InvalidResourceUrlFormat | اگر قالب URL منبع مشخص شده در عنصر <ResourceURL> یا <IncludeURL> خط مشی PythonScript نامعتبر باشد، در این صورت استقرار پروکسی API با شکست مواجه می شود. | build |
InvalidResourceUrlReference | اگر عناصر <ResourceURL> یا <IncludeURL> به یک فایل PythonScript اشاره می کنند که وجود ندارد، در این صورت استقرار پروکسی API با شکست مواجه می شود. فایل منبع ارجاع شده باید در سطح پروکسی API، محیط یا سطح سازمان باشد. | build |
متغیرهای خطا
این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را در زمان اجرا ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.
| متغیرها | کجا | مثال |
|---|---|---|
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>