כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מה
מדיניות הסקריפט של Python מאפשרת להוסיף פונקציונליות מותאמת אישית של Python לזרימה של שרת ה-proxy של ה-API, במיוחד כאשר הפונקציונליות שנחוצה לך מעבר למה שהמדיניות המוכנה מראש של Edge מספקת.
התמיכה בשפת Python מסופקת באמצעות גרסה 2.5.2 של Jython. ספריות של צד שלישי שמוסיפים חייבות להיות "Python טהור" (מוטמע רק ב-Python). מידע נוסף על הוספת ספריות זמין במאמר קובצי משאבים.
מדיניות Python לא מכילה קוד בפועל. במקום זאת, מדיניות Python מפנה למשאב של Python ומגדירה את השלב בתהליך ה-API שבו מופעל הסקריפט של Python. אפשר להעלות את הסקריפט באמצעות עורך ה-proxy לניהול ממשק המשתמש, או לכלול אותו בספרייה /resources/py
בשרתי proxy של API שמפתחים באופן מקומי.
טעימות
מדיניות וסקריפט של Python
מדיניות בנושא Python Script
<?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 |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש באלמנט |
לא רלוונטי | נדרש |
continueOnError |
צריך להגדיר את הערך צריך להגדיר את הערך |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
רכיב <DisplayName>
יש להשתמש במאפיין הזה בנוסף למאפיין name
כדי להוסיף למדיניות
בכלי לעריכת שרת ה-proxy לניהול ממשק משתמש עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת המחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, המערכת משתמשת בערך של מאפיין |
---|---|
נוכחות | אופציונלי |
תיאור | מחרוזת |
<ResourceURL>
הרכיב הזה מציין את קובץ Python הראשי שיופעל בתהליך ה-API. אפשר לאחסן את הקובץ הזה בהיקף של שרת ה-proxy של ה-API (בקטע /apiproxy/resources/py
בחבילה של שרת ה-API של שרת ה-API, או בקטע Scripts בחלונית Navigator של עורך ה-API ), או בהיקף ההרשאות של הארגון או הסביבה לשימוש חוזר בכמה שרתי proxy של API, כפי שמתואר במאמר קובצי משאבים. הקוד שלך יכול להשתמש
באובייקטים, בשיטות ובמאפיינים של מודל האובייקט של JavaScript.
<ResourceURL>py://myscript.py</ResourceURL>
ברירת מחדל: | ללא |
נוכחות: | נדרש |
סוג: | מחרוזת |
<IncludeURL>
המדיניות קובעת שקובץ Python ייטען כתלות בקובץ Python הראשי שצוין באמצעות האלמנט <ResourceURL>
. הסקריפטים ייבדקו לפי הסדר שבו הם רשומים במדיניות.
צריך לכלול יותר ממשאב אחד של תלות ב-Python עם רכיבי <IncludeURL>
נוספים.
<IncludeURL>py://myscript_dependency.py</IncludeURL>
ברירת מחדל: | ללא |
נוכחות: | אופציונלי |
סוג: | מחרוזת |
קודי שגיאה
בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת אם מפתחים כללים לתיקון תקלות. מידע נוסף זמין במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בפגמים.
שגיאות בזמן ריצה
השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.
קוד שגיאה | סטטוס HTTP | סיבה | תיקון |
---|---|---|---|
steps.script.ScriptEvaluationFailed |
500 | המדיניות של PythonScript עלולה לגרום לשגיאות ScriptExecutionמניבות מספר סוגים שונים של שגיאות Script. בין סוגי השגיאות הנפוצים: NameError ו-ZeroDivisionError. | build |
שגיאות בפריסה
השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.
שם השגיאה | סיבה | תיקון |
---|---|---|
InvalidResourceUrlFormat |
אם הפורמט של כתובת ה-URL של המשאב שצוין ב-<ResourceURL> או
ברכיב <IncludeURL> של מדיניות PythonScript לא תקין, הפריסה של שרת ה-proxy של ה-API תיכשל. |
build |
InvalidResourceUrlReference |
אם האלמנטים <ResourceURL> או <IncludeURL> מפנים לקובץ PythonScript שאינו קיים, הפריסה של שרת ה-proxy של ה-API תיכשל.
קובץ המקור שאליו מתבצעת הפניה חייב להיות קיים ברמת שרת ה-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>