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