צריך להגדיר שרת אינטרנט שמשתמש בממשקי ה-API שיצרתם. סביבות Cloud Endpoints ל-Python מטמיעות את ממשק כניסה לשרתי אינטרנט (WSGI) כדי לנתב בקשות ל-API לשיטות בקוד.
כמו בכל אפליקציה שפועלת ב-App Engine, צריך ליצור קובץ בשם app.yaml שבו מגדירים את ההגדרות של אפליקציית App Engine. כדי להגדיר את שרת האינטרנט, צריך לבצע שינויים בקובץ app.yaml.
כדי להגדיר שרת אינטרנט:
יוצרים מודול Python, לדוגמה
main.py, ויוצרים אובייקטendpoints.api_serverברמה העליונה:הקוד
api = endpoints.api_server([EchoApi])יוצר אפליקציית WSGI שמנתבת בקשות API לשיטות במחלקהEchoAPI.אפשר לספק רשימה של אובייקטים מסוג
remote.Service(שהגדרתם כשיצרתם את ה-API) ל-endpoints.api_server. אם יש לכם API שמוטמע בכמה מחלקות, אובייקטremote.Serviceהוא אוסף של מחלקות, כמו שמתואר במאמר יצירת API שמוטמע בכמה מחלקות.האם ליצור מודול נפרד לאובייקט
endpoints.api_serverתלוי בשאלה אם יצרתם ממשק API יחיד או כמה ממשקי API.אם יצרתם כמה ממשקי API (באמצעות כמה מחלקות משנה של
remote.Service) שמוגדרים בכמה קבצים, מומלץ ליצור מודול נפרד לאובייקטendpoints.api_serverכדי שתוכלו לייבא את כל קובצי המחלקה.אם יצרתם API יחיד, אתם יכולים להוסיף את קוד
endpoints.api_serverהנדרש למודול שבו הגדרתם את ה-API, כי אתם לא צריכים לייבא מחלקות אחרות.
בקובץ
app.yaml, ממפים את שרת האינטרנט שיצרתם למיקום של Cloud Endpoints באופן הבא:
mainהוא מודול Python שבו הגדרתם את האובייקטendpoints.api_server.
הצגת ה-API מנתיב אחר
אופציונלי: כדי להציג את ה-API מנתיב אחר, לדוגמה /api/:
משנים את ה-decorator:
@endpoints.api(name='echo', version='v1', base_path='/api/')משנים את הקטע
handlersבקובץapp.yaml:handlers: - url: /api/.* script: main.api
התחברות ל-Endpoints Frameworks for Python
Endpoints Frameworks for Python משתמש במודול הרישום הסטנדרטי של Python כדי לרשום מידע על הסטטוס של האפליקציה ומחזור החיים של הבקשה. מידע נוסף על יומנים של App Engine ועל אופן הצגתם זמין במאמר קריאה וכתיבה של יומני אפליקציות בתיעוד של App Engine.
מודול הרישום ביומן של Python מספק רמות יומן מוגדרות מראש. רמות היומן בסדר עולה של חומרה הן:
| רמת הרישום ביומן | תיאור |
|---|---|
DEBUG |
מספק יומנים מפורטים. בדרך כלל מגדירים את הרמה הזו רק כשמנסים לפתור בעיה. |
INFO |
רמת היומן שמוגדרת כברירת מחדל עבור Endpoints Frameworks. מאפשר לעקוב אחרי התקדמות הבקשה ברמה גבוהה. |
WARNING |
התראה על כך שמשהו לא צפוי קרה, אבל האפליקציה יכולה להתאושש ולהמשיך לפעול כרגיל. |
ERROR |
התראה על שגיאה שקרתה, שיכולה לגרום לאובדן מסוים של פונקציונליות, אבל האפליקציה עדיין פועלת. |
CRITICAL |
התראות על שגיאה חמורה או על אירוע שקרו ויכולים לגרום לסגירת האפליקציה. |
היררכיית ה-Loggers מופרדת באמצעות נקודות. לדוגמה, היומן endpoints.api_config הוא צאצא של היומן endpoints. ההיררכיה הזו מאפשרת לכם לשלוט בדיוק באילו יומנים יופקו או יוסתרו. בדרך כלל, משנים רק את שני רכיבי ה-logger הבסיסיים של Endpoints Frameworks: endpoints ו-endpoints_management.
הפעלת רישום ביומן של DEBUG עבור Endpoints Frameworks
כדי למנוע עומס יתר על קורא היומנים, Endpoints Frameworks מגדיר את כלי הרישום שלו כך שיתעדו רק רשומות ביומן עם INFOרמת היומן או רמה גבוהה יותר. בכל שלב אחרי ייבוא Endpoints Frameworks למודול, אפשר לשנות את רמת היומן באופן הבא:
import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)
השיטה setLevel מגדירה את רמת היומן המינימלית עבור הכלי לרישום.