Elige los campos que se devolverán
Cuando solicitas una ruta o una matriz de rutas, debes usar una máscara de campo para especificar qué información debe devolver la respuesta. No hay una lista predeterminada de campos devueltos. Si no especificas una máscara de campo, los métodos mostrarán un error.
Usar una máscara de campo también garantiza que no solicites datos innecesarios, lo que, a su vez, ayuda con la latencia de respuesta y evita devolver información que tu sistema no necesita.
Especificas la lista de los campos que necesitas en una máscara de campo de respuesta. Luego, pasa la máscara de campo de respuesta a cualquiera de los métodos con el parámetro de URL $fields
o fields
, o bien con el encabezado HTTP o gRPC X-Goog-FieldMask
.
Para obtener más información sobre los parámetros de URL, consulta Parámetros del sistema.
Cómo definir una máscara de campo de respuesta
La máscara de campo de respuesta es una lista de rutas separadas por comas, en la que cada ruta especifica un campo único en el mensaje de respuesta. La ruta comienza con el mensaje de respuesta de nivel superior y usa una ruta separada por puntos hacia el campo especificado.
Construye y especifica una ruta de acceso al campo de la siguiente manera:
- Busca los campos que contienen la información que necesitas. Para obtener más detalles, consulta Referencias de campos.
- Determina las rutas de los campos que necesitas y crea las máscaras de campo para ellos: Para obtener más detalles, consulta Cómo determinar qué máscara de campo quieres usar.
Combina las máscaras de campo de todos los campos que necesites y sepáralas con comas. Por ejemplo, para solicitar el
distanceMeters
del tramo de la ruta y la duración de cada paso del tramo de la ruta, ingresa ambos valores separados por una coma y sin espacios:routes.legs.distanceMeters,routes.legs.steps.duration
Envía la máscara de campo con tu solicitud a la API. Por ejemplo, en una solicitud cURL, especificarías la máscara de campo con
-H
yX-Goog-FieldMask
:-H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
Referencias de campos
Para ver los campos que puedes solicitar en una respuesta a través de máscaras de campo, consulta las referencias de Compute Routes o Compute Route Matrix de la API de Routes que se vinculan en la siguiente lista. Especifica los campos en formato camel case, como se muestra en la referencia. Por ejemplo, routePreference
.
Estas referencias incluyen los campos disponibles. Sin embargo, debes consultar la jerarquía de los campos para determinar la ruta de acceso completa de la máscara de campo. Para obtener detalles sobre cómo obtener la jerarquía de los campos, consulta Cómo determinar qué máscara de campo deseas usar.
- Máscara de campo de la ruta de Compute
- Máscaras de campo de Compute Route Matrix
- REST: Especifica los campos del cuerpo de la respuesta que se devolverán.
- gRPC: Especifica los campos del objeto RouteMatrixElement en la respuesta que se devolverá.
Determina qué máscaras de campo usar
A continuación, te indicamos cómo determinar qué campos deseas usar y cómo construir las máscaras de campo para ellos:
- Solicita todos los campos con una máscara de campo de
*
. - Consulta la jerarquía de los campos en la respuesta para los campos que desees.
Crea tus máscaras de campo con la jerarquía de los campos que se muestran en el paso anterior, con este formato:
topLevelField[.secondLevelField][.thirdLevelField][...]
Por ejemplo, para esta respuesta parcial de una ruta:
"routes": [ { "legs": [ { "steps": [ {"distanceMeters": 119}, {"distanceMeters": 41} ] } ], "distanceMeters": 160 } ]
Si solo deseas devolver el campo distanceMeters
para el tramo de la ruta, es decir, el último distanceMeters
en la muestra anterior, tu máscara de campo será la siguiente:
routes.legs.distanceMeters
Si, en cambio, deseas devolver el campo distanceMeters
para cada paso del tramo de la ruta, es decir, el distanceMeters
en steps
en la muestra anterior, tu máscara de campo será la siguiente:
routes.legs.steps.distanceMeters
Si deseas devolver ambos, con el resultado anterior, tu máscara de campo será la siguiente:
routes.legs.distanceMeters,routes.legs.steps.distanceMeters
Ejemplos de rutas de máscaras de campo
En esta sección, se incluyen más ejemplos para especificar una ruta de campo como parte de una máscara de campo de respuesta en llamadas a REST y gRPC.
Llamada de REST a computeRoutes
En el primer ejemplo, usas una llamada de REST al método computeRoutes
para calcular una ruta. En este ejemplo, en el encabezado, especificas máscaras de campo para devolver los campos de ruta distanceMeters
y duration
en la respuesta. Recuerda agregar el prefijo routes
al nombre del campo.
X-Goog-FieldMask: routes.distanceMeters,routes.duration
Llamada de REST a computeRouteMatrix
Para el método computeRouteMatrix
de REST que se usa para calcular una matriz de rutas, en el encabezado, especifica que se devuelvan originIndex
, destinationIndex
y duration
para cada combinación de origen y destino:
X-Goog-FieldMask: originIndex,destinationIndex,duration
Llamada de gRPC
En el caso de gRPC, establece una variable que contenga la máscara de campos de respuesta. Luego, puedes pasar esa variable a la solicitud.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Consideraciones sobre la ruta del campo
Incluye solo los campos que necesitas en la respuesta para que se muestren solo los campos que necesitas:
- Disminuye los tiempos de procesamiento, por lo que los resultados se muestran con una latencia más baja.
- Garantiza un rendimiento de latencia estable. Si seleccionas todos los campos o todos los campos en el nivel superior, es posible que experimentes una disminución del rendimiento cuando se agreguen campos nuevos y se incluyan automáticamente en tu respuesta.
- Genera un tamaño de respuesta más pequeño, lo que se traduce en una mayor capacidad de procesamiento de la red.
- Garantiza que no solicites datos innecesarios, lo que ayuda a evitar tiempos de procesamiento y cargos facturados innecesarios.
Para obtener más detalles sobre cómo construir una máscara de campo, consulta field_mask.proto.