מבוא
כשמתקשרים אל השיטות Place Details (New), Nearby Search (New) או Text Search (New), צריך לציין אילו שדות רוצים לקבל בתגובה. אין רשימת ברירת מחדל של שדות שמוחזרים. אם לא מציינים את הרשימה הזו, השיטות מחזירות שגיאה.
רשימה מלאה של שדות הנתונים הנתמכים והמק"טים התואמים מופיעה במאמר שדות נתוני מקומות (חדש). למידע על שדות שספציפיים לכל API, אפשר לעיין במאמרים הבאים:
- פרטי מקום (חדש) FieldMask פרמטרים
- פרמטרים של חיפוש בקרבת מקום (חדש) FieldMask
- חיפוש טקסט (חדש) FieldMask פרמטרים
כדי לציין את רשימת השדות, יוצרים מסכת שדות של תגובה. לאחר מכן מעבירים את מסכת שדות התגובה לכל אחת מהשיטות באמצעות הפרמטר $fields
או fields
, או באמצעות הכותרת X-Goog-FieldMask
של HTTP או gRPC.
הסתרת שדות היא שיטה מומלצת לעיצוב, שמאפשרת לוודא שלא מתבצעת בקשה לנתונים מיותרים. כך אפשר להימנע מזמן עיבוד מיותר ומחיובים מיותרים.
הגדרת אנונימיזציה של שדות בתשובה
מסכת השדות של התגובה היא רשימה של נתיבים שמופרדים בפסיקים, כאשר כל נתיב מציין שדה ייחודי בגוף התגובה. הנתיב מתחיל בהודעת התגובה ברמה העליונה, ומשתמש בנתיב שמופרד באמצעות נקודות לשדה שצוין.
יוצרים נתיב שדה באופן הבא:
topLevelField[.secondLevelField][.thirdLevelField][...]
אפשר לבקש את כל השדות באמצעות מסכת שדות של *
.
מידע נוסף על בניית מסכות שדות זמין ב-field_mask.proto.
קובעים באילו מסכות שדות להשתמש
כך קובעים באילו מסכות שדות רוצים להשתמש:
- שליחת בקשה לכל השדות באמצעות מסכת שדות של
*
. - בודקים את ההיררכיה של השדות בתגובה ומחליטים אילו שדות רוצים.
- יוצרים את מסכת השדות באמצעות היררכיית השדות.
הגדרת מסכת שדות של תגובה לחיפוש בקרבת מקום (חדש) ולחיפוש טקסט (חדש)
השיטות Nearby Search (חדשה) ו-Text Search (חדשה) מחזירות מערך של אובייקטים מסוג 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'
אובייקט התגובה המלא מקריאה ל-Text Search (New) הוא מהצורה:
{ "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 (New) מחזירה אובייקט 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 יוסיף בעתיד שדות תגובה נוספים, והשדות החדשים האלה ידרשו זמן חישוב נוסף. אם תבחרו את כל השדות, או אם תבחרו את כל השדות ברמה העליונה, יכול להיות שתחוו ירידה בביצועים כשכל השדות החדשים ייכללו באופן אוטומטי בתשובה.
- התוצאה היא גודל תגובה קטן יותר, מה שמוביל לתפוקה גבוהה יותר של הרשת.
- מוודא שלא תבקשו נתונים מיותרים, וכך עוזר להימנע מזמן עיבוד מיותר ומחיובים מיותרים.