درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
چه
خطمشی «نوشتار Python» به شما امکان میدهد عملکرد سفارشیسازیشده Python را به جریان پراکسی API خود اضافه کنید، بهویژه زمانی که عملکرد موردنیاز شما فراتر از آن چیزی است که خطمشیهای آماده Edge ارائه میدهند.
پشتیبانی از زبان Python ازطریق Jython نسخه ۲.۵.۲ ارائه میشود. کتابخانههای طرف سومی که اضافه میکنید باید «Python خالص» باشند (فقط در Python پیادهسازی شده باشند). برای اطلاعات بیشتر درباره افزودن کتابخانهها، فایلهای منبع را ببینید.
خطمشی Python حاوی کد واقعی نیست. درعوض، خطمشی Python به منبع Python
ارجاع میدهد و «مرحله» را در جریان میانای برنامهسازی کاربردی که در آن دستورگان Python اجرا میشود تعریف میکند. میتوانید
برنامه خود را ازطریق ویرایشگر پراکسی «واسط کاربر مدیریت» بارگذاری کنید، یا میتوانید آن را در
/resources/py دایرکتوری در پراکسیهای API که بهصورت محلی توسعه میدهید اضافه کنید.
نمونهها
خطمشی و دستورگان Python
خطمشی دستورگان Python
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Script name="Python-1"> <DisplayName>Python-1</DisplayName> <ResourceURL>py://myscript.py</ResourceURL> </Script>
در این مثال، عنصر ResourceURL منبع مربوط به دستورگان Python را مشخص میکند.
دستورگان Python
این نشان میدهد که چه چیزی را میتوانید در خود دستورگان Python بگنجانید.
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>
این عنصر فایل اصلی Python را که در جریان API اجرا خواهد شد مشخص میکند. میتوانید این فایل را در محدوده پراکسی API (در زیر /apiproxy/resources/py در بسته پراکسی API یا در بخش «دستورگان» در قاب «پیمایشگر» ویرایشگر پراکسی API)، یا در محدودههای سازمان یا محیط برای استفاده مجدد در چندین پراکسی API ذخیره کنید، همانطور که در فایلهای منبع توضیح داده شده است. کد شما میتواند از
اشیا، روشها، و داراییهای مدل شیء جاوا اسکریپت استفاده کند.
<ResourceURL>py://myscript.py</ResourceURL>
| پیشفرض: | خالی |
| حضور: | الزامی |
| نوع: | رشته |
عنصر<IncludeURL>
فایل Python را مشخص میکند تا بهعنوان وابستگی در فایل Python اصلی که با عنصر
<ResourceURL> مشخص شده است بار شود. متنهای دستور براساس ترتیبی که در خطمشی فهرست شدهاند ارزیابی میشوند.
بیشاز یک منبع وابستگی Python با عناصر
<IncludeURL> اضافی اضافه کنید.
<IncludeURL>py://myscript_dependency.py</IncludeURL>
| پیشفرض: | خالی |
| حضور: | اختیاری |
| نوع: | رشته |
کدهای خطا
این بخش کدهای خطا و پیامهای خطایی را که برگردانده میشوند و متغیرهای خطایی را که Edge هنگام راهاندازی خطا در این خطمشی تنظیم میکند شرح میدهد. این اطلاعات برای دانستن اینکه آیا قوانین خطایی را برای مدیریت خطاها توسعه میدهید یا نه مهم است. برای کسب اطلاعات بیشتر، آنچه باید درباره خطاهای خطمشی بدانیدو رسیدگی به اشکالات را ببینید.
خطاهای زمان اجرا
این خطاها ممکن است هنگام اجرای خطمشی رخ دهند.
| کد خطا | وضعیت HTTP | علت | رفع اشکال |
|---|---|---|---|
steps.script.ScriptEvaluationFailed |
۵۰۰ | خطمشی PythonScript میتواند چندین نوع مختلف از خطاهای ScriptExecutionFailed را ایجاد کند. انواع خطاهای رایج شامل NameError و ZeroDivisionError میشود. | build |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پراکسی حاوی این خطمشی را مستقر میکنید.
| نام خطا | علت | رفع اشکال |
|---|---|---|
InvalidResourceUrlFormat |
اگر قالب نشانی وب منبع مشخصشده در <ResourceURL> یا
عنصر <IncludeURL> خطمشی PythonScript نامعتبر باشد، استقرار پراکسی API ناموفق خواهد بود. |
build |
InvalidResourceUrlReference |
اگر عنصر <ResourceURL> یا <IncludeURL>
به فایل PythonScript که وجود ندارد اشاره کند، استقرار میانای برنامهسازی کاربر API ناموفق خواهد بود.
فایل منبع ارجاعشده باید در سطح پراکسی API، محیط، یا سازمان وجود داشته باشد. |
build |
متغیرهای خطا
این متغیرها زمانی تنظیم میشوند که این خطمشی در زمان اجرا باعث بروز خطا شود. برای اطلاعات بیشتر، آنچه باید درباره خطاهای خطمشی بدانید را ببینید.
| متغیر | مکان | مثال |
|---|---|---|
fault.name="fault_name" |
fault_name نام خطا است، همانطور که در جدول خطاهای زمان اجرا در بالا فهرست شده است. نام خطا آخرین بخش کد خطا است. | 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>