أنت تعرض مستندات 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>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياري |
النوع: | سلسلة |
رموز الخطأ
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.script.ScriptEvaluationFailed |
500 | The PythonScript policy can throw several different types of ScriptExecutionFailed errors. Commonly seen types of errors include NameError and ZeroDivisionError. | build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidResourceUrlFormat |
If the format of the resource URL specified within the <ResourceURL> or
the <IncludeURL> element of the PythonScript policy is invalid, then the deployment of the API proxy fails. |
build |
InvalidResourceUrlReference |
If the <ResourceURL> or the <IncludeURL> elements
refer to a PythonScript file that does not exist, then the deployment of the API proxy fails.
The referenced source file must exist either the API proxy, environment, or organization level. |
build |
Fault variables
These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ScriptExecutionFailed" |
pythonscript.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | pythonscript.PythonScript-1.failed = true |
Example error response
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"", "detail": { "errorcode": "steps.script.ScriptExecutionFailed" } } }
Example fault rule
<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>