כשקוראים לפונקציה פרטי מקום (חדש), חיפוש בקרבת מקום (חדש), או חיפוש טקסט (חדש), צריך לציין אילו שדות רוצים שיחזרו בתשובה. אין רשימת ברירת מחדל של השדות שהוחזרו. אם משמיטים את הרשימה הזו, השיטות מחזירות שגיאה.
כדי לציין את רשימת השדות, יוצרים מסכת שדה תגובה. לאחר מכן מעבירים את המסכה של שדה התגובה לשיטה באמצעות הפרמטר $fields
או fields
, או באמצעות הכותרת X-Goog-FieldMask
של HTTP או gRPC.
התממה של שדות היא שיטה טובה לעיצוב כדי להבטיח שלא מבקשים נתונים לא נחוצים, וכך למנוע זמן עיבוד וחיוב מיותרים. חיובים.
הגדרת אנונימיזציה של שדות תשובה
המסכה של שדה התגובה היא רשימה של נתיבים מופרדים בפסיקים, שבהם כל נתיב מציין שדה ייחודי בהודעת התגובה. הנתיב מתחיל ב- הודעת תשובה ברמה העליונה והיא משתמשת בנתיב שמופרד באמצעות נקודות.
בונים נתיב בשדה באופן הבא:
topLevelField[.secondLevelField][.thirdLevelField][...]
כדי לבקש את כל השדות, אפשר להשתמש באנונימיזציה של השדות *
.
מידע נוסף על בניית מסכות שדות זמין בקובץ field_mask.proto.
איך קובעים באילו מסכות שדות להשתמש
כך תקבעו באילו מסכות של שדות להשתמש:
- מבקשים את כל השדות באמצעות מסכת שדות של '*'.
- בודקים את היררכיית השדות בתגובה ומחליטים אילו שדות רוצים.
- יוצרים את מסכת השדות באמצעות היררכיית השדות.
הגדרת מסכה לשדה התשובה לחיפוש בקרבת מקום (חדש) ולחיפוש טקסט (חדש)
חיפוש בקרבת מקום (חדש) וגם
חיפוש טקסט (חדש) מחזיר מערך של אובייקטים מסוג Place ב-
השדה places
של התשובה. עבור ממשקי ה-API האלה, places
נמצא ברמה העליונה
בשדה של התשובה.
לדוגמה, כדי לראות את האובייקט המלא של התשובה חיפוש טקסט (חדש):
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: *' \ 'https://places.googleapis.com/v1/places:searchText'
אובייקט התשובה המלא מחיפוש טקסט (חדש) הפורמט של השיחה הוא:
{ "places": [ { "name": "places/ChIJs5ydyTiuEmsR0fRSlU0C7k0", "id": "ChIJs5ydyTiuEmsR0fRSlU0C7k0", "types": [ "vegetarian_restaurant", "vegan_restaurant", "meal_takeaway", "restaurant", "food", "point_of_interest", "establishment" ], "nationalPhoneNumber": "0433 479 794", "internationalPhoneNumber": "+61 433 479 794", "formattedAddress": "29 King St, Sydney NSW 2000, Australia", "displayName": { "text": "Spiced @ Barangaroo", "languageCode": "en" }, ... }, ... ] }
לכן צריך לציין מסכת שדות לממשקי ה-API האלה בצורה:
places[.secondLevelField][.thirdLevelField][...]
אם רוצים להחזיר רק את השדות formattedAddress
ו-displayName
, צריך להגדיר
מסיכת השדות שלך כדי:
places.formattedAddress,places.displayName
ציון הערך displayName
כולל את השדה text
וגם את השדה language
של
displayName
אם רוצים רק את השדה text
, מגדירים את אנונימיזציית השדות כך:
places.formattedAddress,places.displayName.text
הגדרת אנונימיזציה של שדות התגובה לפרטי המקום (חדש)
Place Details מחזיר אובייקט Place יחיד בטופס:
{ "name": "places/ChIJkR8FdQNB0VQRm64T_lv1g1g", "id": "ChIJkR8FdQNB0VQRm64T_lv1g1g", "types": [ "locality", "political" ], "formattedAddress": "Trinidad, CA 95570, USA", "displayName": { "text": "Trinidad", "languageCode": "en" } ... }
לכן, כדי לציין מסכת שדות ל-API הזה, צריך לציין את השדות של אובייקט המקום שרוצים להחזיר:
curl -X GET -H 'Content-Type: application/json' \ -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: formattedAddress,displayName" \ https://places.googleapis.com/v1/places/ChIJj61dQgK6j4AR4GeTYWZsKWw
קריאה ל-gRPC
ב-gRPC, מגדירים משתנה שמכיל את המסכה של שדה התשובה. לאחר מכן אפשר להעביר משתנה לבקשה.
const ( fieldMask = "places.formattedAddress,places.displayName" )
שיקולים לגבי נתיב השדה
צריך לכלול רק את השדות שנחוצים בתשובה. החזרת השדות הנחוצים בלבד:
- מקצר את זמני העיבוד, כך שהתוצאות מוחזרות עם ערך נמוך יותר זמן אחזור.
- היא מבטיחה ביצועים יציבים של זמן אחזור אם בעתיד יתווספו ל-API שדות תגובה נוספים, והשדות החדשים האלה ידרשו זמן חישוב נוסף. אם בוחרים את כל השדות, או אם בוחרים את כל השדות ברמה העליונה, יכול להיות שתבחינו בירידה בביצועים כשכל השדות החדשים ייכללו באופן אוטומטי בתגובה.
- תוצאות קטנות יותר – מגדילות את הרשת תפוקה.
- מבטיח שלא תבקשו נתונים מיותרים, דבר שעוזר למנוע זמן עיבוד וחיובים מיותרים.