במסמך הזה מפורטות כמה טכניקות שאפשר להשתמש בהן כדי לשפר את הביצועים של האפליקציה. במקרים מסוימים, נעשה שימוש בדוגמאות מממשקי API אחרים שהוגדרו כדי להמחיש את הרעיונות המוצגים. עם זאת, אותם מושגים רלוונטיים גם ל-Display & Video 360 API.
עבודה עם משאבים חלקיים
דרך נוספת לשפר את הביצועים של הקריאות ל-API היא לבקש רק את החלק של הנתונים שמעניין אתכם. כך האפליקציה יכולה להימנע מהעברה, ניתוח ואחסון של שדות לא נחוצים, וכך להשתמש במשאבים כמו רשת, מעבד וזיכרון בצורה יעילה יותר.
תשובה חלקית
כברירת מחדל, השרת שולח בחזרה את הייצוג המלא של המשאב אחרי עיבוד הבקשות. כדי לשפר את הביצועים, אפשר לבקש מהשרת לשלוח רק את השדות שאתם באמת צריכים ולקבל תגובה חלקית במקום זאת.
כדי לבקש תשובה חלקית, צריך להשתמש בפרמטר הבקשה fields כדי לציין את השדות שרוצים שיחזירו. אפשר להשתמש בפרמטר הזה בכל בקשה שמחזירה נתוני תגובה.
דוגמה
בדוגמה הבאה מוצג השימוש בפרמטר fields עם API של Display & Video 360.
בקשה פשוטה: בקשת ה-HTTP GET הזו משמיטה את הפרמטר fields ומחזירה את המשאב המלא.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1
תגובה מלאה של המשאב: נתוני המשאב המלאים כוללים את השדות הבאים, ועוד רבים שלא צוינו כדי לקצר את הטקסט.
200 OK
{
"advertisers": [
{
"name": "advertisers/1",
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1",
"entityStatus": "ENTITY_STATUS_ACTIVE",
"updateTime": "2019-01-01T00:00:00.000000Z",
"generalConfig": {
"domainUrl": "http://example.com",
"timeZone": "America/New_York",
"currencyCode": "USD",
"address": {
}
},
"adServerConfig": {
"thirdPartyOnlyConfig": {
}
},
"creativeConfig": {
},
"dataAccessConfig": {
"sdfConfig": {
"sdfConfig": {
"version": "VERSION_3_1"
}
}
},
"integrationDetails": {
}
},
{
"name": "advertisers/2",
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2",
"entityStatus": "ENTITY_STATUS_ACTIVE",
"updateTime": "2019-01-01T00:00:00.000000Z",
"generalConfig": {
"domainUrl": "http://example.com",
"timeZone": "America/New_York",
"currencyCode": "USD",
"address": {
}
},
"adServerConfig": {
"thirdPartyOnlyConfig": {
}
},
"creativeConfig": {
},
"dataAccessConfig": {
"sdfConfig": {
"sdfConfig": {
"version": "VERSION_3_1"
}
}
},
"integrationDetails": {
}
},
...
],
"nextPageToken": "..."
}
בקשה לתשובה חלקית: בבקשה הבאה לאותו משאב נעשה שימוש בפרמטר fields כדי לצמצם באופן משמעותי את כמות הנתונים שמוחזרים.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)
תגובה חלקית: בתגובה לבקשה שלמעלה, השרת שולח תשובה שמכילה מערך מצומצם של מפרסמים שכולל רק את המאפיינים של מזהה המפרסם, שם התצוגה ומזהה השותף של כל מפרסם, אם הם קיימים.
200 OK
{
"advertisers": [
{
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1"
},
{
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2"
},
...
]
}
לתשומת ליבכם: התגובה היא אובייקט JSON שכולל רק את השדות שנבחרו ואת אובייקטי ההורה שמכילים אותם.
בהמשך מוסבר איך לעצב את הפרמטר fields, ולאחר מכן מוסבר מה בדיוק מוחזר בתגובה.
סיכום של תחביר הפרמטרים של השדות
הפורמט של ערך הפרמטר fields בבקשה מבוסס באופן רופף על תחביר XPath. התחביר הנתמך מפורט בהמשך, ודוגמאות נוספות מפורטות בקטע הבא.
כדי לבחור כמה שדות, צריך להשתמש ברשימה מופרדת בפסיקים.
משתמשים ב-
a/bכדי לבחור שדהbשמוטמע בשדהa, וב-a/b/cכדי לבחור שדהcשמוטמע ב-b.כדי לבקש קבוצה של שדות משנה ספציפיים של מערכי נתונים או אובייקטים, אפשר להשתמש בבורר משנה. לשם כך, צריך להציב ביטויים בסוגריים "
( )".לדוגמה: הפונקציה
fields=advertisers(advertiserId,generalConfig/domainUrl)מחזירה רק את מזהה המפרסם ואת כתובת ה-URL של הדומיין לכל רכיב במערך המפרסמים. אפשר גם לציין שדה משנה יחיד, שבוfields=advertisers(advertiserId)שווה ל-fields=advertisers/advertiserId.
דוגמאות נוספות לשימוש בפרמטר fields
בדוגמאות הבאות מוסבר איך הערך של הפרמטר fields משפיע על התגובה.
- מציינים את השדות שרוצים שיחזרו, או מבצעים בחירות של שדות.
הערך של פרמטר הבקשה
fieldsהוא רשימה של שדות מופרדים בפסיקים, וכל שדה מצוין ביחס לשורש התגובה. לכן, אם מבצעים פעולה מסוגlist, התגובה היא אוסף, ובדרך כלל כוללת מערך של משאבים. אם מבצעים פעולה שמחזירה משאב יחיד, השדות מצוינים ביחס למשאב הזה. אם השדה שבחרתם הוא מערך (או חלק ממנו), השרת מחזיר את החלק שנבחר מכל הרכיבים במערך.ריכזנו כאן כמה דוגמאות ברמת האוסף:
דוגמה השפעה advertisersהפונקציה מחזירה את כל הרכיבים במערך advertisers, כולל כל השדות בכל רכיב, אבל לא שדות אחרים.advertisers,nextPageTokenהפונקציה מחזירה גם את השדה nextPageTokenוגם את כל הרכיבים במערךadvertisers.advertisers/advertiserIdהפונקציה מחזירה רק את הערך של advertiserIdלכל הרכיבים במערךadvertisers.
בכל פעם שמוחזר שדה בתצוגת עץ, התגובה כוללת את אובייקטי ההורה שמקיפים אותו. שדות ההורה לא כוללים שדות צאצא אחרים, אלא אם הם נבחרים גם הם באופן מפורש.advertisers/generalConfig/domainUrlהפונקציה מחזירה את השדה domainUrlשל האובייקטgeneralConfig, שנמצא בעצמו בתצוגת עץ במערךadvertisers.ריכזנו כאן כמה דוגמאות ברמת המשאב:
דוגמה השפעה advertiserIdהפונקציה מחזירה את השדה advertiserIdשל המשאב המבוקש.generalConfig/domainUrlהפונקציה מחזירה את השדה domainUrlשל האובייקטgeneralConfigבמשאב המבוקש.- לבקש רק חלקים של שדות ספציפיים באמצעות בחירות משנה.
כברירת מחדל, אם בבקשה מצוינים שדות מסוימים, השרת מחזיר את האובייקטים או את רכיבי המערך במלואם. אפשר לציין תשובה שכוללת רק שדות משנה מסוימים. כדי לעשות זאת, משתמשים בתחביר של בחירת המשנה
( ), כמו בדוגמה הבאה.דוגמה השפעה advertisers(advertiserId,generalConfig/domainUrl)הפונקציה מחזירה רק את הערכים של advertiserIdו-generalConfigdomainUrlלכל רכיב במערךadvertisers.
טיפול בתשובות חלקיות
אחרי שהשרת מעבד בקשה תקינה שכוללת את פרמטר השאילתה fields, הוא שולח בחזרה קוד סטטוס HTTP 200 OK יחד עם הנתונים המבוקשים. אם יש שגיאה בפרמטר השאילתה fields או שהוא לא תקין מסיבה אחרת, השרת מחזיר את קוד הסטטוס 400 Bad Request של HTTP, יחד עם הודעת שגיאה שמציינת מה הבעיה בבחירת השדות (לדוגמה, "Invalid field selection a/b").