השם הקודם של Cloud Endpoints Frameworks היה Endpoints. כדי להבחין בין שתי הגרסאות, בדף הזה הגרסה החדשה נקראת Endpoints Frameworks גרסה 2.0, והגרסה הישנה נקראת Endpoints גרסה 1.0. בדף הזה מוסבר איך להעביר אפליקציה של Cloud Endpoints גרסה 1.0 אל Endpoints Frameworks גרסה 2.0. ההעברה כוללת שינוי בספרייה ושינוי בהגדרת האפליקציה, אבל אתם לא צריכים לבצע שינויים בקוד.
יתרונות
גרסה 2.0 של Endpoints מציעה מספר יתרונות, כולל:
- זמן האחזור של הבקשות קוצר.
- שילוב טוב יותר עם תכונות של App Engine, כמו דומיינים בהתאמה אישית.
- תכונות חדשות לניהול API.
גרסה 2.0 של Endpoints Frameworks לא משפיעה על הממשקים של ה-API. לקוחות קיימים ממשיכים לפעול אחרי ההעברה בלי שנדרשים שינויים בקוד בצד הלקוח.
סקירה כללית של התכונות
התכונות הבאות תואמות לדורות קודמים של Endpoints גרסה 1.0:
- פרוטוקול JSON-REST, שמשמש את כל ספריות הלקוח של Google
- שירות Discovery
- כל תכונות האימות הקיימות (OAuth2/OpenID Connect)
- תמיכה של ספריות לקוח בלקוחות שנוצרו
- CORS (למתקשרים ב-JavaScript שלא משתמשים בספריית הלקוח של Google JavaScript)
- API Explorer
חלוקת התנועה לא זמינה.
תכונות שלא נכללות כרגע
התכונות הבאות לא זמינות. אם אתם צריכים אחת מהתכונות האלה, אתם יכולים לשלוח הגשת בקשה להוספת תכונה.
- פרוטוקול JSON-RPC, שנדרש ללקוחות iOS מדור קודם. כדי ליצור לקוחות iOS ל-API של Endpoints Frameworks בגרסה 2.0, מומלץ להשתמש בספריית הלקוח של Google APIs Objective-C ל-REST APIs.
- תגי ETags אוטומטיים
- שדות
kindאוטומטיים - שילוב עם IDE
fieldsתשובות חלקיות- יצירה אוטומטית של שיטת PATCH API
מעבר מגרסה 1.0 של Endpoints
כדי לעבור מגרסה 1.0:
יוצרים תיקיית משנה בשם
/libבספרייה הראשית של האפליקציה.מתקינים את הספרייה מהספרייה הראשית של האפליקציה:
pip install -t lib google-endpoints --ignore-installedמסירים את הערכים
- name: endpointsו-version 1.0מהקובץapp.yamlשל האפליקציה בקטעlibraries. לדוגמה:libraries: - name: endpoints #Remove version: 1.0 #Removeבקטע
librariesבקובץapp.yaml, מוסיפים את השורה הבאה:libraries: - name: pycrypto version: 2.6 - name: ssl version: 2.7.11Endpoints Frameworks דורש את הגרסאות האלה של הספריות
pycryptoו-ssl.בקטע
handlersבקובץapp.yaml, משנים את ההנחיהurlמ-- url: /_ah/spi/.*ל-- url: /_ah/api/.*.בתיקיית השורש של האפליקציה, יוצרים או משנים קובץ בשם
appengine_config.pyכך שיכלול את הדברים הבאים:from google.appengine.ext import vendor vendor.add('lib')בודקים את המחרוזת של גרסת ה-API. מחרוזת הגרסה שצוינה בקישוט
@endpoints.api(version='v1', ...)מופיעה בנתיב של ה-API. אם מציינים מחרוזת גרסה שתואמת לתקן SemVer, רק מספר הגרסה הראשית מופיע בנתיב של ה-API כשפורסים את ה-API. לדוגמה, ל-API בשםechoעם גרסה2.1.0יהיה נתיב כמו/echo/v2. אם תעדכנו את APIechoלגרסה2.2.0ותטמיעו שינוי שתואם לגרסאות קודמות, הנתיב יישאר/echo/v2. כך תוכלו לעדכן את מספר גרסת ה-API כשאתם מבצעים שינוי שתואם לגרסאות קודמות, בלי לשבש את הנתיבים הקיימים עבור הלקוחות שלכם. אבל אם תעדכנו אתechoAPI לגרסה3.0.0(כי אתם פורסים שינוי שגורם לשבירת תאימות), הנתיב ישתנה ל-/echo/v3.פורסים מחדש את האפליקציה שלכם ב-Endpoints Frameworks.
אימות פריסה חדשה
כדי לוודא שהתנועה מנותבת דרך המסגרת החדשה:
- שליחת בקשות לפריסה החדשה.
- עוברים לדף Cloud Logging של הפרויקט.
- אם הבקשות מוצגות עם נתיבים שמתחילים ב-
/_ah/api, סימן שה-API שלכם מוגש עכשיו על ידי גרסה 2.0 של Endpoints Frameworks. בלוגים לא אמורות להופיע בקשות עם נתיבים שמתחילים ב-/_ah/spi. הבקשות האלה מצביעות על כך שפרוקסי Endpoints בגרסה 1.0 עדיין משרת בקשות.
הוספת ניהול API
ב-Endpoints Frameworks גרסה 2.0 נוספו תכונות לניהול API, כולל:
- ניהול מפתחות API
- שיתוף API
- אימות משתמשים
- מדדי API
- יומני API
כדי להתחיל, עוברים לדף תחילת העבודה עם Endpoints Frameworks for Python.
פתרון בעיות
בקטע הזה מתוארים התנהגויות לא צפויות נפוצות שמתרחשות כשעוברים ל-Endpoints Frameworks גרסה 2.0, ומוצעים פתרונות לבעיות האלה.
ה-API מחזיר שגיאות 404, אבל ב-API Explorer עדיין מופיעים ממשקי ה-API בצורה תקינה
כשעוברים לגרסה 2.0 של Endpoints Frameworks, צריך להסיר את ההגדרה של נקודות הקצה הישנות מגרסה 1.0. אם ההגדרה הישנה עדיין מופיעה בהגדרות של האפליקציה, שירות ה-Endpoints ימשיך להתייחס לאפליקציה כאפליקציה בגרסה 1.0. יכול להיות שתראו בקשות ביומנים של App Engine שנשלחות אל /_ah/spi, וכתוצאה מכך שגיאות HTTP 404 שנשלחות ללקוח.
אם השורות הבאות מופיעות בקובץ
app.yaml, צריך להסיר אותן:handlers: - url: /_ah/spi/.* script: ...מוודאים שבקטע
handlersבקובץapp.yamlמוגדר הנתיב הנכון:handlers: # The endpoints handler must be mapped to /_ah/api. - url: /_ah/api/.* script: ...
הודעת שגיאה: ImportError: cannot import name locked_file
הבעיה הזו מתרחשת אם יחסי התלות שלכם מכילים גרסה של ספריית oauth2client שלא תואמת ל-App Engine. בעיה מוכרת