Sélectionner les champs à renvoyer
Lorsque vous demandez un itinéraire ou une matrice d'itinéraires, vous devez utiliser un masque de champ pour spécifier les informations à renvoyer dans la réponse. Il n'existe pas de liste par défaut des champs renvoyés. Si vous ne spécifiez pas de masque de champ, les méthodes renvoient une erreur.
Le masquage de champ vous permet également de ne pas demander de données inutiles, ce qui réduit la latence de réponse et évite les frais inutiles pour les informations dont votre système n'a pas besoin.
Vous spécifiez la liste des champs dont vous avez besoin dans un masque de champ de réponse. Vous transmettez ensuite le masque de champ de réponse à l'une des méthodes à l'aide du paramètre d'URL $fields
ou fields
, ou à l'aide de l'en-tête HTTP ou gRPC X-Goog-FieldMask
.
Pour en savoir plus sur les paramètres d'URL, consultez la section Paramètres système.
Définir un masque de champ de réponse
Le masque de champ de réponse est une liste de chemins séparés par une virgule, où chaque chemin spécifie un champ unique dans le message de réponse. Le chemin d'accès commence à partir du message de réponse de premier niveau et utilise un chemin d'accès au champ spécifié séparé par des points.
Créez et spécifiez un chemin de champ comme suit:
- Recherchez les champs contenant les informations dont vous avez besoin dans l'API Routes. Pour en savoir plus, consultez Références de champ.
- Déterminez les chemins des champs dont vous avez besoin et créez les masques de champ correspondants: pour en savoir plus, consultez la section Déterminer le masque de champ que vous souhaitez utiliser.
Combinez les masques de champ pour tous les champs dont vous avez besoin, en les séparant par des virgules. Par exemple, pour demander le
distanceMeters
de l'étape du parcours, ainsi que la durée de chaque étape du parcours, saisissez-les tous les deux, séparés par une virgule, sans espace:routes.legs.distanceMeters,routes.legs.steps.duration
Envoyez le masque de champ avec votre requête API. Par exemple, dans une requête cURL, vous devez spécifier le masque de champ avec
-H
etX-Goog-FieldMask
:-H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
Références de champ
Pour connaître les champs que vous pouvez demander dans une réponse à l'aide de masques de champ, consultez les références de l'API Routes indiquées dans la liste suivante. Spécifiez les champs en casse camel, comme indiqué dans la documentation de référence. Par exemple, routePreference
.
Ces références incluent les champs disponibles. Toutefois, vous devez vous reporter à la hiérarchie des champs pour déterminer le chemin d'accès complet du masque de champ. Pour savoir comment obtenir la hiérarchie des champs, consultez Déterminer le masque de champ que vous souhaitez utiliser.
- Calculer le masque de champ de route
- Compute route matrix field masks
- REST: spécifie les champs du corps de la réponse à renvoyer.
- gRPC: spécifie les champs de l'objet RouteMatrixElement dans la réponse à renvoyer.
Déterminer les masques de champ à utiliser
Voici comment déterminer les champs que vous souhaitez utiliser et créer les masques de champ correspondants:
- Demandez tous les champs à l'aide d'un masque de champ
*
. - Recherchez les champs souhaités dans la hiérarchie des champs de la réponse.
Créez vos masques de champ en utilisant la hiérarchie des champs affichée à l'étape précédente, selon le format suivant:
topLevelField[.secondLevelField][.thirdLevelField][...]
Par exemple, pour cette réponse partielle d'un parcours:
"routes": [ { "legs": [ { "steps": [ {"distanceMeters": 119}, {"distanceMeters": 41} ] } ], "distanceMeters": 160 } ]
Si vous ne souhaitez renvoyer que le champ distanceMeters
pour l'étape du parcours, c'est-à-dire le dernier distanceMeters
de l'exemple précédent, votre masque de champ est le suivant:
routes.legs.distanceMeters
Si vous souhaitez plutôt renvoyer le champ distanceMeters
pour chaque étape de l'itinéraire, c'est-à-dire le distanceMeters
sous steps
dans l'exemple précédent, votre masque de champ est le suivant:
routes.legs.steps.distanceMeters
Si vous souhaitez renvoyer les deux, avec le résultat ci-dessus, votre masque de champ est le suivant:
routes.legs.distanceMeters,routes.legs.steps.distanceMeters
Exemples de chemins de masque de champ
Cette section contient d'autres exemples sur la façon de spécifier un chemin de champ dans un masque de champ de réponse dans les appels REST et gRPC.
Appel REST vers computeRoutes
Dans le premier exemple, vous utilisez un appel REST à la méthode computeRoutes
pour calculer un itinéraire. Dans cet exemple, dans l'en-tête, vous spécifiez des masques de champ pour renvoyer les champs distanceMeters
et duration
de l'itinéraire dans la réponse. N'oubliez pas de préfixer le nom du champ par routes
.
X-Goog-FieldMask: routes.distanceMeters,routes.duration
Appel REST vers computeRouteMatrix
Pour la méthode REST computeRouteMatrix
utilisée pour calculer une matrice de calcul d'itinéraires, dans l'en-tête, spécifiez de renvoyer originIndex
, destinationIndex
et duration
pour chaque combinaison de point de départ et de destination:
X-Goog-FieldMask: originIndex,destinationIndex,duration
Appel gRPC
Pour gRPC, définissez une variable contenant le masque de champ de réponse. Vous pouvez ensuite transmettre cette variable à la requête.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Remarques concernant les chemins d'accès aux champs
N'incluez que les champs dont vous avez besoin dans la réponse pour renvoyer uniquement les champs dont vous avez besoin:
- Réduit les temps de traitement, ce qui permet de renvoyer vos résultats avec une latence plus faible.
- Assure des performances de latence stables. Si vous sélectionnez tous les champs ou tous les champs au niveau supérieur, vous risquez de constater une dégradation des performances lorsque de nouveaux champs sont ajoutés et automatiquement inclus dans votre réponse.
- Résulte en une taille de réponse plus petite, ce qui se traduit par un débit réseau plus élevé.
- Vous assurez de ne pas demander de données inutiles, ce qui permet de réduire le temps de traitement et les frais facturés.
Pour en savoir plus sur la création d'un masque de champ, consultez field_mask.proto.