Al llamar a Place Details (Nuevo), Nearby Search (Nuevo), o bien Text Search (Nuevo), debes hacer lo siguiente: especificar qué campos quieres que se devuelvan en la respuesta. No hay una lista predeterminada de campos devueltos. Si omites esta lista, los métodos mostrarán un error.
Para especificar la lista de campos, crea una máscara de campo de respuesta. Luego, debes pasar
la máscara de campo de respuesta a cualquiera de los métodos con el parámetro $fields
,
fields
, o con el encabezado HTTP o gRPC X-Goog-FieldMask
.
El enmascaramiento de campo es una práctica de diseño recomendada para asegurarse de no solicitar datos innecesarios, lo que ayuda a evitar tiempos de procesamiento y facturación innecesarios cargos.
Define una máscara de campo de respuesta
La máscara del campo de respuesta es una lista de rutas de acceso separadas por comas, en las que cada ruta especifica un campo único en el mensaje de respuesta. La ruta comienza en mensaje de respuesta de nivel superior y usa una ruta de acceso separada por puntos al campo especificado.
Crea una ruta de campo de la siguiente manera:
topLevelField[.secondLevelField][.thirdLevelField][...]
Puedes solicitar todos los campos con una máscara de campo de *
.
Para obtener más información sobre cómo construir máscaras de campo, consulta la field_mask.proto.
Determina qué máscaras de campo usar
A continuación, te mostramos cómo puedes determinar qué máscaras de campo deseas usar:
- Solicita todos los campos con una máscara de campo de "*".
- Observa la jerarquía de los campos en la respuesta y determina qué campos que desees.
- Compila tu máscara de campo con la jerarquía de campos.
Cómo definir una máscara de campo de respuesta para Nearby Search (nuevo) y Text Search (nuevo)
Nearby Search (nuevo) y
Text Search (nueva) devuelve un array de objetos Place en
el campo places
de la respuesta Para estas APIs, places
es el nivel superior
de la respuesta.
Por ejemplo, para ver el objeto de respuesta completo de un Text Search (nueva):
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'
El objeto de respuesta completo de Text Search (nuevo) llamada tiene el siguiente formato:
{ "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" }, ... }, ... ] }
Por lo tanto, debes especificar una máscara de campo para estas APIs de la siguiente manera:
places[.secondLevelField][.thirdLevelField][...]
Si quieres que se devuelvan solo los campos formattedAddress
y displayName
, configura
la máscara de campo para:
places.formattedAddress,places.displayName
Si especificas displayName
, se incluyen los campos text
y language
de
displayName
Si solo quieres el campo text
, establece la máscara de campo de la siguiente manera:
places.formattedAddress,places.displayName.text
Cómo definir una máscara de campo de respuesta para Place Details (nuevo)
Place Details muestra un solo objeto Place con el siguiente formato:
{ "name": "places/ChIJkR8FdQNB0VQRm64T_lv1g1g", "id": "ChIJkR8FdQNB0VQRm64T_lv1g1g", "types": [ "locality", "political" ], "formattedAddress": "Trinidad, CA 95570, USA", "displayName": { "text": "Trinidad", "languageCode": "en" } ... }
Por lo tanto, debes especificar una máscara de campo para esta API especificando los campos de el objeto Place que deseas devolver:
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
Llamada a gRPC
Para gRPC, configura una variable que contenga la máscara de campo de respuesta. Luego, puedes pasar esa variable a la solicitud.
const ( fieldMask = "places.formattedAddress,places.displayName" )
Consideraciones de las rutas de campo
Incluye solo los campos que necesites en la respuesta. Mostrar solo los campos que necesitas:
- Reduce los tiempos de procesamiento, por lo que tus resultados se devolverán con un menor latencia.
- Garantiza un rendimiento de latencia estable si la API agrega más campos de respuesta. en el futuro, y esos nuevos campos requieren tiempo de procesamiento adicional. Si seleccionar todos los campos o, si seleccionas todos los campos en el nivel superior, puedes experimenta una degradación del rendimiento cuando todos los campos nuevos se incluirá automáticamente en tu respuesta.
- Genera un tamaño de respuesta más pequeño, lo que se traduce en una mayor red de procesamiento.
- Se asegura de no solicitar datos innecesarios, lo que ayuda a evitar tiempo de procesamiento innecesario y cargos facturados.