יצירת API שהוטמע עם כמה מחלקות

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

api_collection = endpoints.api(name="library", version="v1.0")


@api_collection.api_class(resource_name="shelves")
class Shelves(remote.Service):
    @endpoints.method(Request, Response)
    def list(self, request):
        return Response()


@api_collection.api_class(resource_name="books", path="books")
class Books(remote.Service):
    @endpoints.method(Request, Response, path="bookmark")
    def get_bookmark(self, request):
        return Response()

    @endpoints.method(Request, Response)
    def best_sellers_list(self, request):
        return Response()

מחליפים את api_collection בכל שם שרוצים, כל עוד משתמשים באותו שם לכל מחלקה ב-API. לפני כל כיתה ב-API צריך להוסיף את ה-decorator כמו שמוצג בקטע הקוד הקודם.

מידע על הארגומנט resource_name

הארגומנט האופציונלי resource_name של api_class הוא שם המחלקה שרוצים לחשוף ב-API. זה השם שמופיע ב-API Explorer, לפני כל שיטה שנחשפת במחלקה.

מידע על הארגומנט path

הארגומנט האופציונלי path של api_class מציין את המיקום היחסי שבו מופיעות שיטות המחלקה בכתובת ה-URL. בדוגמה הקודמת, לא צוין path עבור המחלקה Shelves, ולכן אפשר לגשת ל-methods שלה דרך הרמה הבסיסית (root), /_ah/api/library/v1. לדוגמה, אפשר לגשת לשיטה list מהנתיב /_ah/api/library/v1/list.

אם מציינים ארגומנט path עבור מחלקה, הנתיב שצוין מצורף לשורש. בדוגמה שלמעלה, הארגומנט pathbooks מצוין עבור המחלקה Books, ולכן אפשר לגשת ל-methods שלו דרך /_ah/api/library/v1/books. לדוגמה, אפשר לגשת לשיטה best_sellers_list מהנתיב /_ah/api/library/v1/books/best_sellers_list.

הארגומנט path הוא אופציונלי לשיטות. אם לא מציינים path, המערכת משתמשת בשם השיטה. כל הנתיבים שצוינו לשיטות מצורפים לנתיב המחלקה. בדוגמה שלמעלה, הערך bookmark מצוין כ-path של המתודה get_bookmark. אפשר לגשת ל-method‏ get_bookmark מהנתיב /_ah/api/library/v1/books/bookmark.

אפשר לשנות את הארגומנט של המחלקה path על ידי ציון ארגומנט של method path שמתחיל ב-/. לדוגמה, נניח שהנתיב של השיטה get_bookmark במחלקה Books הוא:

@endpoints.method(Request, Response, path='/bookmark')
def get_bookmark(self, request):
  return Response()

הלוכסן המוביל משנה את הנתיב של השיטה get_bookmark ל-/_ah/api/library/v1/bookmark.

הצגת API עם כמה מחלקות

בקוד endpoints.api_server שיוצר את שרת ה-API, מציינים את השם שהקציתם לאוסף api_class. לדוגמה, אם שם האוסף הוא api_collection, יוצרים את השרת באופן הבא:

api = endpoints.api_server([api_collection])

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