יצירת ה-API באמצעות Cloud Endpoints Frameworks for Python

ממשק API הוא שירות של קריאה לפרוצדורה מרוחקת (RPC) שמספק שיטות מרוחקות שנגישות ללקוחות חיצוניים. כל API של קצה עורפי מורכב ממחלקה של שירות RPC שהיא מחלקת משנה של המחלקה ProtoRPC remote.Service, ומשיטה אחת או יותר. כשמגדירים שיטה, צריך להגדיר גם מחלקות Message לבקשות שנכנסות לשיטה הזו ולתשובות שמוחזרות ממנה. מחלקת Message מבצעת פונקציית מיפוי כדי שאפשר יהיה לחלץ את הנתונים הנכנסים ולספק אותם לשיטת השירות בצורה תקינה, או לספק אותם בצורה תקינה לתגובה היוצאת.

אם לבקשה יש ארגומנטים של נתיב או מחרוזת שאילתה, צריך להשתמש במחלקה ResourceContainer למיפוי, במקום במחלקה פשוטה Message.

לבסוף, צריך להוסיף קישוטים למחלקת שירות ה-API ולשיטות המחלקה, וצריך להגדיר מחלקות Message לבקשות ולתשובות.

יצירת ה-API

בקטע הבא מוסבר איך להוסיף לקוד קישוטים כדי ליצור API שמוטמע במחלקה אחת. אם יש לכם API עם כמה מחלקות, כדאי לעיין במאמר בנושא יצירת API שמיושם עם כמה מחלקות. מידע מפורט על כל ה-decorators הזמינים מופיע במאמר בנושא Decorators.

כדי ליצור API:

  1. מוסיפים את יבוא החובה הבא:

    import endpoints
    from endpoints import message_types
    from endpoints import messages
    from endpoints import remote
  2. מגדירים מחלקת משנה של remote.Service ומקשטים אותה באמצעות @endpoints.api:

    @endpoints.api(name="echo", version="v1")
    class EchoApi(remote.Service):

    שימו לב: שם ה-API ושם מחלקת השירות לא צריכים להיות זהים. מספר הגרסה מתייחס לגרסת ה-API. הערך שתזינו יהפוך לחלק מהנתיב בכתובת ה-URL של ה-API. מידע נוסף על גרסאות זמין במאמר בנושא ניהול גרסאות של API.

  3. קובעים אילו נתונים השיטה מצפה לקבל מהבקשה ואילו נתונים מוחזרים, ויוצרים מחלקת Message לגוף הבקשה ולגוף התגובה:

    class EchoRequest(messages.Message):
        message = messages.StringField(1)
    
    
    class EchoResponse(messages.Message):
        """A proto Message that contains a simple string field."""
    
        message = messages.StringField(1)
    
    
    ECHO_RESOURCE = endpoints.ResourceContainer(
        EchoRequest, n=messages.IntegerField(2, default=1)
    )

    שימו לב: אם לא מופיעים ארגומנטים בגוף הבקשה, כמו בבקשה GET, אפשר להשמיט את המחלקה Message מהבקשה ולהשתמש רק בערך message_types.VoidMessage.

    אם הבקשה כוללת ארגומנטים של נתיב או מחרוזת שאילתה, צריך להחליף את המחלקה Message במחלקה המתאימה ResourceContainer.

    מידע מלא על יצירה ושימוש במחלקות Message מופיע במסמכי התיעוד של התשובה והבקשה של Google Protocol RPC.Message

  4. יוצרים את השיטה עבור ה-API ומקשטים אותה באמצעות @endpoints.method:

    @endpoints.method(
            # This method takes a ResourceContainer defined above.
            ECHO_RESOURCE,
            # This method returns an Echo message.
            EchoResponse,
            path="echo",
            http_method="POST",
            name="echo",
        )
        def echo(self, request):

    אם הבקשה מכילה נתונים של נתיב או מחרוזת שאילתה, צריך להחליף את סוג הודעת הבקשה בResourceContainer מתאים.

  5. מוסיפים את הקוד להצגת ה-API, כמו שמתואר במאמר בנושא יצירת שרת אינטרנט.

המאמרים הבאים