העברה לגרסה 2.0 של Cloud Endpoints Frameworks

השם הקודם של 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:

  1. יוצרים תיקיית משנה בשם /lib בספרייה הראשית של האפליקציה.

  2. מתקינים את הספרייה מהספרייה הראשית של האפליקציה:

     pip install -t lib google-endpoints --ignore-installed
    
  3. מסירים את הערכים - name: endpoints ו-version 1.0 מהקובץ app.yaml של האפליקציה בקטע libraries. לדוגמה:

    libraries:
    - name: endpoints   #Remove
      version: 1.0      #Remove
    
  4. בקטע libraries בקובץ app.yaml, מוסיפים את השורה הבאה:

    libraries:
    - name: pycrypto
      version: 2.6
    - name: ssl
      version: 2.7.11
    

    ‫Endpoints Frameworks דורש את הגרסאות האלה של הספריות pycrypto ו-ssl.

  5. בקטע handlers בקובץ app.yaml, משנים את ההנחיה url מ-- url: /_ah/spi/.* ל-- url: /_ah/api/.*.

  6. בתיקיית השורש של האפליקציה, יוצרים או משנים קובץ בשם appengine_config.py כך שיכלול את הדברים הבאים:

    from google.appengine.ext import vendor
    
    vendor.add('lib')
    
  7. בודקים את המחרוזת של גרסת ה-API. מחרוזת הגרסה שצוינה בקישוט @endpoints.api(version='v1', ...) מופיעה בנתיב של ה-API. אם מציינים מחרוזת גרסה שתואמת לתקן SemVer, רק מספר הגרסה הראשית מופיע בנתיב של ה-API כשפורסים את ה-API. לדוגמה, ל-API בשם echo עם גרסה 2.1.0 יהיה נתיב כמו /echo/v2. אם תעדכנו את API‏ echo לגרסה 2.2.0 ותטמיעו שינוי שתואם לגרסאות קודמות, הנתיב יישאר /echo/v2. כך תוכלו לעדכן את מספר גרסת ה-API כשאתם מבצעים שינוי שתואם לגרסאות קודמות, בלי לשבש את הנתיבים הקיימים עבור הלקוחות שלכם. אבל אם תעדכנו את echo API לגרסה 3.0.0 (כי אתם פורסים שינוי שגורם לשבירת תאימות), הנתיב ישתנה ל-/echo/v3.

  8. פורסים מחדש את האפליקציה שלכם ב-Endpoints Frameworks.

אימות פריסה חדשה

כדי לוודא שהתנועה מנותבת דרך המסגרת החדשה:

  1. שליחת בקשות לפריסה החדשה.
  2. עוברים לדף Cloud Logging של הפרויקט.

    כניסה לדף Logs Explorer

  3. אם הבקשות מוצגות עם נתיבים שמתחילים ב-/_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 שנשלחות ללקוח.

  1. אם השורות הבאות מופיעות בקובץ app.yaml, צריך להסיר אותן:

    handlers:
    - url: /_ah/spi/.*
      script: ...
    
  2. מוודאים שבקטע 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. בעיה מוכרת