أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المزايا
تتيح لك سياسة Python البرمجية إضافة وظائف Python مخصصة إلى مسار الخادم الوكيل لواجهة برمجة التطبيقات، وخاصةً عندما تكون الوظائف التي تحتاج إليها تفوق ما تتّبعه سياسات Edge غير التقليدية التي تقدمها.
يتوفر الدعم للغة بايثون من خلال Jython الإصدار 2.5.2. يجب أن تكون مكتبات الجهات الخارجية التي تضيفها هي pure Python. (يتم تنفيذها في بايثون فقط). لمزيد من المعلومات حول إضافة المكتبات، يُرجى الاطّلاع على ملفات الموارد.
لا تحتوي سياسة Python على أي رمز. بدلاً من ذلك، تشير سياسة بايثون إلى لغة بايثون
ويحدد الخطوة في تدفق واجهة برمجة التطبيقات حيث يتم تنفيذ نص بايثون. يمكنك تحميل
النص البرمجي من خلال محرر الخادم الوكيل لواجهة مستخدم الإدارة، أو يمكنك تضمينه في
دليل /resources/py
في الخوادم الوكيلة لواجهة برمجة التطبيقات التي تطوّرها محليًا
نماذج
Python Policy & نص الفيديو
سياسة النصوص البرمجية في 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 البرمجي ذي الصلة المصدر.
نص بايثون
وهذا يوضح ما يمكنك تضمينه في نص بايثون نفسه.
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 |
الاسم الداخلي للسياسة. يمكن لقيمة السمة يمكنك، إذا أردت، استخدام العنصر |
لا ينطبق | مطلوب |
continueOnError |
اضبط القيمة على يمكنك ضبط القيمة على |
خطأ | اختياري |
enabled |
اضبط القيمة على اضبط القيمة على |
صحيح | اختياري |
async |
تم إيقاف هذه السمة نهائيًا. |
خطأ | منهي العمل به |
<DisplayName> عنصر
استخدِمه مع السمة name
لتصنيف السياسة في
إدارة خادم وكيل لواجهة المستخدم باسم مختلف بلغة طبيعية.
<DisplayName>Policy Display Name</DisplayName>
تلقائي |
لا ينطبق إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة |
---|---|
التواجد في المنزل | اختياري |
النوع | سلسلة |
<ResourceURL> عنصر
يحدّد هذا العنصر ملف Python الرئيسي الذي سيتم تنفيذه في مسار واجهة برمجة التطبيقات. يمكنك تخزين
هذا الملف في نطاق الخادم الوكيل لواجهة برمجة التطبيقات (ضمن /apiproxy/resources/py
في الخادم الوكيل لواجهة برمجة التطبيقات
في قسم "النصوص البرمجية" ضمن جزء المستكشف في محرر واجهة برمجة التطبيقات الوكيلة) أو في القسم
على مستوى المؤسسة أو البيئة لإعادة استخدامها عبر الخوادم الوكيلة المتعددة لواجهة برمجة التطبيقات، كما هو موضح في
ملفات الموارد: يمكن أن تستخدم التعليمات البرمجية
الكائنات والطرق وخصائص نموذج كائن JavaScript.
<ResourceURL>py://myscript.py</ResourceURL>
الإعداد التلقائي: | لا ينطبق |
الحضور: | مطلوب |
النوع: | سلسلة |
<IncludeURL> عنصر
لتحديد ملف بايثون لتحميله كتبعية لملف بايثون الرئيسي المحدد باستخدام
العنصر <ResourceURL>
. سيتم تقييم النصوص بالترتيب الذي
أن يتم إدراجها في السياسة
قم بتضمين أكثر من مورد تبعية في Python مع
<IncludeURL>
.
<IncludeURL>py://myscript_dependency.py</IncludeURL>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياري |
النوع: | سلسلة |
رموز الخطأ
يصف هذا القسم رموز الخطأ ورسائل الخطأ التي يتم إرجاعها ومتغيراتها. التي يتم ضبطها من خلال Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. من المهم أن تعرف هذه المعلومات إذا كنت تقوم بوضع قواعد خطأ التعامل مع الأخطاء. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على ما تحتاج إلى معرفته حول أخطاء السياسة والتعامل مع المعالجة والأخطاء.
أخطاء بيئة التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
رمز الخطأ | رموز حالة HTTP | السبب | إصلاح |
---|---|---|---|
steps.script.ScriptEvaluationFailed |
500 | يمكن أن تؤدي سياسة PythonScript إلى ظهور عدة أنواع مختلفة من أخطاء ScriptExecutionFound. شائعة تتضمن أنواع الأخطاء التي تمت رؤيتها NameError ZeroDivisionError: | build |
أخطاء النشر
يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.
اسم الخطأ | السبب | إصلاح |
---|---|---|
InvalidResourceUrlFormat |
إذا تم تحديد تنسيق عنوان URL للمورد المحدد في <ResourceURL> أو
العنصر <IncludeURL> في سياسة PythonScript غير صالح، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
InvalidResourceUrlReference |
إذا كانت السمة <ResourceURL> أو <IncludeURL>
يشير إلى ملف PythonScript لم يتم العثور عليه، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات.
يجب أن يكون الملف المصدر المُشار إليه موجودًا إما على مستوى الخادم الوكيل لواجهة برمجة التطبيقات أو البيئة أو المؤسسة. |
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>