Ce document décrit les étapes à suivre pour commencer à utiliser l'API Route Optimization.
Prérequis
Cette procédure vous guide dans la configuration d'un compte Google Cloud et d'un projet Google Cloud pour lequel la facturation est activée. Vous devez également savoir comment l'utilisation de l'API Route Optimization vous est facturée.
- Consultez la facturation et les coûts d'utilisation sur la page Utilisation et facturation de l'API Route Optimization.
Vérifiez que vous disposez d'un compte Google Cloud.
Se connecter à la console Google CloudVérifiez que vous disposez d'un projet Google Cloud pour lequel la facturation est activée.
Accéder à la page "Facturation"- Sélectionnez votre projet pour ouvrir la page Facturation.
Sur la page Facturation :
- Si la facturation est déjà activée pour le projet sélectionné et que vous ne disposez que d'un seul compte de facturation, la page Facturation s'ouvre.
- Si vous possédez plusieurs comptes de facturation, sélectionnez Accéder au compte de facturation associé pour afficher les détails du compte de facturation associé au projet.
- Si un compte de facturation existe, mais qu'il n'est pas associé au projet, vous êtes invité à associer un compte de facturation au projet.
- Si aucun compte de facturation n'existe ou si vous souhaitez en créer un, sélectionnez Gérer les comptes de facturation pour créer un compte de facturation. Pour en savoir plus, consultez Créer un compte de facturation Cloud en libre-service.
Activer l'API
Avant de pouvoir utiliser l'API Route Optimization, vous devez l'activer dans votre projet Google Cloud à l'aide de la console Google Cloud ou de la commande gcloud.
Pour activer l'API, utilisez la commande suivante :
Console
Ouvrez la page du produit dans la console Google Cloud :
Activer l'API Route OptimizationCliquez sur le bouton Activer.
gcloud
gcloud services enable \ --project "PROJECT" \ "routeoptimization.googleapis.com"
En savoir plus sur le SDK Google Cloud, l'installation du SDK Cloud et les commandes suivantes :
Les produits Google Maps Platform exigent que les appels d'API incluent un jeton OAuth pour empêcher toute utilisation non autorisée.
Créer un jeton OAuth
L'API Route Optimization est compatible avec OAuth 2.0 pour l'authentification. Google est compatible avec les scénarios OAuth 2.0 courants, tels que les scénarios pour un serveur Web.
Ce document explique comment transmettre un jeton OAuth à un appel d'API Route Optimization dans votre environnement de développement. Pour en savoir plus sur l'utilisation d'OAuth dans un environnement de production, consultez Méthodes d'authentification chez Google.
Vous pouvez appeler les API Google Maps directement en envoyant des requêtes API au serveur, ou utiliser des bibliothèques clientes pour simplifier votre code. Google Maps fournit des bibliothèques clientes pour Go, Java, Node.js et Python. Pour en savoir plus, consultez Bibliothèques clientes de l'API Route Optimization.
Présentation d'OAuth
Vous pouvez créer et gérer des jetons d'accès avec OAuth de plusieurs manières, en fonction de votre environnement de déploiement.
Vous pouvez utiliser OAuth 2.0 pour les interactions de serveur à serveur entre votre application et un service Google. Dans ce scénario, vous utilisez un compte de service associé à votre application plutôt qu'à un utilisateur individuel. Vous pouvez envoyer des requêtes API à l'aide du compte de service sans impliquer directement les utilisateurs. Pour en savoir plus sur les méthodes d'authentification, consultez Méthodes d'authentification chez Google.
Vous pouvez également intégrer l'API Route Optimization à une application mobile Android ou iOS. Pour en savoir plus sur l'utilisation d'OAuth et la gestion des jetons d'accès pour différents environnements de déploiement, consultez Utiliser OAuth 2.0 pour accéder aux API Google.
Champs d'application OAuth
Pour utiliser OAuth avec l'API Route Optimization, vous devez attribuer au jeton OAuth le champ d'application suivant :
https://www.googleapis.com/auth/cloud-platform
Configurer les rôles
Ce document fournit des informations sur les rôles et les autorisations Identity and Access Management (IAM) pour l'optimisation des itinéraires. IAM vous permet d'accorder un accès précis à des ressources Route Optimization spécifiques et d'empêcher l'accès à d'autres ressources. IAM vous permet d'appliquer le principe de sécurité du moindre privilège, qui stipule que personne ne devrait avoir plus d'autorisations que le strict nécessaire.
Si un compte principal (un utilisateur, un groupe ou un compte de service) appelle une API Google Cloud, il doit disposer des autorisations IAM appropriées pour utiliser la ressource. Pour accorder à un compte principal les autorisations requises, vous lui attribuez un rôle IAM.
Pour vous familiariser avec la gestion des accès dans Google Cloud en général, consultez la page Présentation d'IAM.
Les rôles IAM prédéfinis permettant aux comptes principaux d'accéder à l'optimisation des itinéraires sont les suivants :
-
Route Optimization Editor (roles/routeoptimization.editor): accorde à l'utilisateur ou au compte de service un accès en lecture et en écriture aux ressources d'optimisation des itinéraires dans le projet. Cela inclut la possibilité d'appelerOptimizeToursetBatchOptimizeTours, ainsi que de récupérer des opérations de longue durée à l'aide deGetOperation. -
Route Optimization Viewer (roles/routeoptimization.viewer): accorde un accès en lecture seule aux ressources d'optimisation d'itinéraire du projet. Ce rôle permet d'appelerOptimizeTourset d'accéder aux opérations de longue durée à l'aide deGetOperation.
gcloud projects add-iam-policy-binding PROJECT \ --member user:someone@example.com \ --role roles/routeoptimization.editor
Pour en savoir plus, consultez Attribuer un rôle IAM à l'aide de la console Google Cloud.
Exemple : Tester des appels d'API REST dans votre environnement de développement local
Si vous ne disposez pas d'un environnement qui génère des jetons et que vous souhaitez essayer l'API Route Optimization avec un jeton OAuth, suivez la procédure décrite dans cette section.
Cet exemple explique comment utiliser le jeton OAuth fourni par les identifiants par défaut de l'application (ADC) pour effectuer l'appel. Pour en savoir plus sur l'utilisation des ADC pour appeler des API Google à l'aide de bibliothèques clientes, consultez la page S'authentifier à l'aide de bibliothèques clientes.
Utilisez la procédure REST suivante uniquement pour le développement ou les tests, et non pour la production.
Prérequis
Avant d'effectuer une requête REST à l'aide d'ADC, utilisez la CLI gcloud pour fournir des identifiants à ADC :
Installez et initialisez la CLI
gcloud. Pour en savoir plus, consultez Installer la gcloud CLI.Authentifiez-vous à l'aide de la CLI
gcloud:gcloud auth application-default login
Terminez le processus de connexion pour enregistrer vos identifiants dans le fichier d'identifiants local utilisé par ADC.
Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local.
Effectuer une requête REST
Dans cet exemple, vous transmettez deux en-têtes de requête :
Transmettez le jeton OAuth dans l'en-tête
Authorizationen utilisant la commande suivante pour générer le jeton :gcloud auth application-default print-access-tokenLe jeton renvoyé a un champ d'application de
https://www.googleapis.com/auth/cloud-platform.Transmettez l'ID ou le nom de votre projet Google Cloud pour lequel la facturation est activée dans l'en-tête
X-Goog-User-Project.
Pour appeler l'API Route Optimization à l'aide d'un jeton OAuth, procédez comme suit :
Dans l'exemple de code suivant, remplacez PROJECT_NUMBER_OR_ID par le numéro ou l'ID de votre projet Google Cloud :
curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data-binary @- << EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.79581, "longitude": -122.4218856 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 }, "endLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00" } } EOMPour copier la commande
curl, cliquez sur Copier dans l'exemple de code.Collez la commande dans une fenêtre de terminal, puis exécutez-la.
La réponse est un objet JSON :
{
"routes": [
{
"vehicleStartTime": "2023-01-14T00:00:00Z",
"vehicleEndTime": "2023-01-14T00:39:22Z",
"visits": [
{
"isPickup": true,
"startTime": "2023-01-14T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2023-01-14T00:19:53Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2023-01-14T00:00:00Z"
},
{
"travelDuration": "1193s",
"travelDistanceMeters": 9007,
"waitDuration": "0s",
"totalDuration": "1193s",
"startTime": "2023-01-14T00:00:00Z"
},
{
"travelDuration": "1169s",
"travelDistanceMeters": 9546,
"waitDuration": "0s",
"totalDuration": "1169s",
"startTime": "2023-01-14T00:19:53Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2362s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2362s",
"travelDistanceMeters": 18553
}
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2362s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2362s",
"travelDistanceMeters": 18553
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2023-01-14T00:00:00Z",
"latestVehicleEndTime": "2023-01-14T00:39:22Z"
}
}
Dépannage
Si votre requête renvoie un message d'erreur indiquant que cette API n'est pas compatible avec les identifiants d'utilisateur final, consultez Résoudre les problèmes de configuration de vos ADC.