בחירת שדות להחזרה

כשקוראים לפונקציה פרטי מקום (חדש), חיפוש בקרבת מקום (חדש), או חיפוש טקסט (חדש), צריך לציין אילו שדות רוצים שיחזרו בתשובה. אין רשימת ברירת מחדל של השדות שהוחזרו. אם משמיטים את הרשימה הזו, השיטות יחזירו שגיאה.

כדי לציין את רשימת השדות, יוצרים אנונימיזציה של שדות תשובה. לאחר מכן מעבירים אנונימיזציה של שדות התגובה לכל method באמצעות הפרמטר $fields או fields, או באמצעות הכותרת X-Goog-FieldMask של HTTP או gRPC.

התממה של שדות היא שיטה טובה לעיצוב כדי להבטיח שלא מבקשים נתונים לא נחוצים, וכך למנוע זמן עיבוד וחיוב מיותרים. חיובים.

הגדרת אנונימיזציה של שדות תשובה

מסכת שדות התשובה היא רשימה מופרדת בפסיקים של נתיבים, שבהם כל נתיב מציין שדה ייחודי בהודעת התגובה. הנתיב מתחיל ב- הודעת תשובה ברמה העליונה והיא משתמשת בנתיב שמופרד באמצעות נקודות.

בונים נתיב בשדה באופן הבא:

topLevelField[.secondLevelField][.thirdLevelField][...]

כדי לבקש את כל השדות, אפשר להשתמש באנונימיזציה של השדות *.

למידע נוסף על בניית מסיכות שדות, קראו את המאמר field_mask.proto.

קביעה באילו מסכות של שדות להשתמש

כך תקבעו באילו מסכות של שדות להשתמש:

  1. מבקשים את כל השדות באמצעות מסכת שדות של '*'.
  2. צריך לבדוק את ההיררכיה של השדות בתשובה ולהבין השדות הרצויים.
  3. יוצרים מסיכת שדות באמצעות היררכיית השדות.

הגדרת אנונימיזציה של שדות תשובה עבור 'חיפוש בקרבת מקום' (חדש) ו'חיפוש טקסט' (חדש)

חיפוש בקרבת מקום (חדש) וגם חיפוש טקסט (חדש) מחזיר מערך של אובייקטים מסוג 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 הזה על ידי ציון השדות של את אובייקט ה-Place שרוצים להחזיר:

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