בדף הזה מוסבר איך להגדיר מכסות ל-API ב-Cloud Endpoints Frameworks. מהן מכסות?
Java
במסגרת התהליך הבא, אנחנו מניחים שכבר:
- לכתוב את הקוד ולהוסיף לו הערות בשביל ה-API.
- הוספנו ניהול API.
- פרסתם את ה-API.
- הגדרתם את ה-API לשימוש במפתח API. הפרמטר הזה נחוץ כדי ש-Endpoints Frameworks יוכל לזהות אתGoogle Cloud הפרויקט שאליו משויכת האפליקציה שמבצעת את הקריאה. מידע נוסף זמין במאמר בנושא שיתוף ממשקי API שמוגנים באמצעות מפתח API.
כדי להגדיר מכסות ב-API:
בקובץ שמכיל את ההערות בהיקף API, מוסיפים את השורה הבאה להערה @Api:
limitDefinitions = { @ApiLimitMetric( name = "YOUR_METRIC_NAME", displayName = "YOUR_METRIC_DISPLAY_NAME", limit = YOUR_QUOTA_LIMIT) }- מחליפים את
YOUR_METRIC_NAMEבשם שמתאר את מונה בקשות ה-API. - מחליפים את
YOUR_METRIC_DISPLAY_NAMEבטקסט שמוצג בדף Endpoints > Services > Quotas כדי לזהות את המכסה. מחליפים את
YOUR_QUOTA_LIMITבערך של מספר שלם. זהו מספר הבקשות שאפליקציה שמשויכת לפרויקט של צרכן Google Cloud יכולה לשלוח בדקה. לדוגמה:@Api( name = "echo", version = "v1", namespace = @ApiNamespace( ownerDomain = "echo.example.com", ownerName = "echo.example.com", packagePath = "" ), limitDefinitions = { @ApiLimitMetric( name = "read-requests", displayName = "Read requests", limit = 1000), @ApiLimitMetric( name = "list-requests", displayName = "List requests", limit = 100), @ApiLimitMetric( name = "write-requests", displayName = "Write requests", limit = 50), } )
- מחליפים את
לכל שיטה שרוצים להחיל עליה מכסה, מוסיפים את הפרטים הבאים להערה
@ApiMethod:metricCosts = { @ApiMetricCost( name ="YOUR_METRIC_NAME", cost = YOUR_COST) }- מחליפים את
YOUR_METRIC_NAMEבשם שציינתם בפרמטרlimitDefinitionsבהערה@Api. מחליפים את
YOUR_COSTבערך מספרי שמציין את העלות של כל בקשה.לדוגמה:
@ApiMethod(name = "echo", metricCosts = { @ApiMetricCost( name = "read-requests", cost = 1) }) public Message echo(Message message, @Named("n") @Nullable Integer n) { // ...function code here... }
- מחליפים את
מידע נוסף על ההערות שמופיעות במכסות
Python
במסגרת התהליך הבא, אנחנו מניחים שכבר:
- התקנתם גרסה 2.4.5 ואילך של ספריית Endpoints Frameworks.
- יצרתם את ה-API.
- יצירת שרת אינטרנט.
- הוספנו ניהול API.
- פרסתם את ה-API.
- הגדרתם את ה-API לשימוש במפתח API. הפרמטר הזה נדרש כדי ש-Endpoints Frameworks יוכל לזהות אתGoogle Cloud הפרויקט שאליו משויכת האפליקציה שמבצעת את הקריאה. מידע נוסף זמין במאמר בנושא שיתוף ממשקי API שמוגנים באמצעות מפתח API.
כדי להגדיר מכסות ב-API:
בקובץ שמכיל את הדקורטור של ה-API, יוצרים רשימה של מופעי
LimitDefinition, בדומה לזו:quota_limits = [ endpoints.LimitDefinition( "YOUR_METRIC_NAME", "YOUR_METRIC_DISPLAY_NAME", limit) ]- מחליפים את
YOUR_METRIC_NAMEבשם שמתאר את מונה בקשות ה-API. - מחליפים את
YOUR_METRIC_DISPLAY_NAMEבטקסט שמוצג בדף Endpoints > Services > Quotas כדי לזהות את המכסה. מחליפים את
limitבערך של מספר שלם. זהו מספר הבקשות שאפליקציה שמשויכת לפרויקט של צרכן Google Cloudיכולה לשלוח בדקה. לדוגמה:quota_limits = [ endpoints.LimitDefinition('read-requests', 'Read Requests', 1000), endpoints.LimitDefinition('list-requests', 'List Requests', 100), endpoints.LimitDefinition('write-requests', 'Write Requests', 50), ]
- מחליפים את
מוסיפים את המכסה ל-decorator של ה-API על ידי הקצאה שלה לארגומנט
limit_definitions. לדוגמה:@endpoints.api(name='bookstore', version='v1', limit_definitions=quota_limits)לכל שיטה שרוצים להחיל עליה מכסה, מקצים מילון לארגומנט
METRIC_COSTSשל מעצב השיטה. המפתח צריך להיות שם שציינתם בארגומנטlimit_definitionsשל ה-decorator של ה-API, והערך הוא מספר שלם שמציין את העלות של כל בקשה. לדוגמה:@endpoints.method(path='shelves/{shelf}', http_method='GET', metric_costs={'read-requests': 1}) def get_shelf(self, request): # ...function code here...
מידע נוסף על המאפיינים לציון מכסות מפורט בהמשך: