במסמך הזה מפורטות כמה טכניקות שאפשר להשתמש בהן כדי לשפר את הביצועים של האפליקציה. במקרים מסוימים, נעשה שימוש בדוגמאות מממשקי 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"
).