L'API Route Optimization dispose des points de terminaison suivants :
OptimizeTours: point de terminaison bloquant pour les requêtes uniques.OptimizeToursLongRunning: point de terminaison non bloquant pour les requêtes uniques avec des temps de résolution longs.OptimizeToursUri: point de terminaison non bloquant pour les requêtes uniques nécessitant de grandes quantités de données.BatchOptimizeTours: point de terminaison non bloquant pour plusieurs requêtes traitées simultanément.
Le choix du point de terminaison dépend de votre cas d'utilisation, de la taille de la requête, du temps de résolution attendu et de la nécessité de traiter plusieurs requêtes simultanément.
Comparer les points de terminaison
Utilisez le tableau suivant pour identifier le point de terminaison adapté à vos besoins :
| Point de terminaison | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| Type d'exécution | Blocage | Non bloquante | Non bloquante | Non bloquante |
| Requêtes traitées | Célibataires | Célibataires | Célibataires | Plusieurs |
| Taille maximale de requête | Petite | Moyenne | Grande | Grande |
| Temps de résolution | Version courte | Long | Long | Long |
| Nécessite Google Cloud Storage | Non | Non | Oui | Oui |
Comprendre les caractéristiques du point de terminaison
Le tableau précédent répertorie les caractéristiques suivantes pour vous aider à choisir le bon point de terminaison :
- Type d'exécution : détermine la manière dont votre application gère la connexion réseau en attendant une réponse. Il en existe deux types :
- Points de terminaison bloquants : maintenez la connexion ouverte jusqu'à ce que l'API renvoie une réponse.
- Points de terminaison non bloquants : traitent les requêtes en arrière-plan. L'API renvoie immédiatement un ID d'opération de longue durée (LRO) que vous interrogez ultérieurement pour récupérer les résultats.
- Requêtes traitées : détermine si le point de terminaison gère une seule requête de routage ou traite plusieurs requêtes simultanément.
- Taille maximale des requêtes : les requêtes de petite et moyenne taille sont envoyées directement de manière intégrée et sont soumises à des limites côté serveur. Les requêtes volumineuses contournent ces limites en utilisant Google Cloud Storage. Vous trouverez les limites exactes de taille des requêtes dans les sections d'informations sur les points de terminaison.
- Délai de résolution : les requêtes simples peuvent être résolues rapidement, tandis que les requêtes complexes prennent plus de temps. Étant donné que le temps de résolution détermine la durée pendant laquelle une connexion doit rester ouverte, le choix de votre point de terminaison dépend de vos limites de délai avant expiration. Pour en savoir plus, consultez Configurer les délais avant expiration et les délais d'exécution.
- Nécessite Google Cloud Storage : les points de terminaison qui traitent des requêtes et des réponses volumineuses lisent et écrivent des données directement dans Google Cloud Storage. Au lieu d'envoyer les données dans la requête HTTP, vous importez votre requête dans un bucket Cloud Storage et transmettez l'URI à l'API.
Endpoint details
L'API Route Optimization comporte quatre points de terminaison. Les sections suivantes expliquent le fonctionnement de chaque point de terminaison et incluent un exemple de requête.
OptimizeTours
OptimizeTours est un point de terminaison bloquant destiné aux requêtes uniques avec des temps de résolution courts. Elle renvoie un itinéraire optimisé directement dans la réponse.
Comme il s'agit d'un point de terminaison bloquant, vous devez maintenir votre connexion réseau ouverte jusqu'à ce que l'API ait fini de traiter la requête pour qu'elle renvoie une réponse. Ce point de terminaison accepte les requêtes intégrées d'une taille maximale d'environ 4 Mo.
Voir un exemple de requête OptimizeTours
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.424215, "longitude": -122.095260 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursLongRunning
OptimizeToursLongRunning est un point de terminaison non bloquant pour les requêtes uniques dont le temps de résolution est long. Elle renvoie un ID d'opération de longue durée (LRO).
Vous pouvez interroger cet ID à l'aide du point de terminaison GetOperation pour vérifier l'état de la requête et récupérer les itinéraires optimisés finaux. Ce point de terminaison accepte les requêtes intégrées d'environ 8 Mo maximum.
Voir un exemple de requête OptimizeToursLongRunning
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri est un point de terminaison non bloquant destiné aux requêtes uniques avec des temps de résolution longs et des exigences de données importantes (plus de 8 Mo). Elle renvoie un ID d'opération de longue durée (LRO). Vous pouvez interroger cet ID à l'aide du point de terminaison GetOperation pour vérifier l'état de la requête.
Au lieu d'envoyer votre charge utile de manière intégrée, vous importez votre OptimizeToursRequest dans Google Cloud Storage. Vous transmettez ensuite à l'API les URI Cloud Storage de votre requête d'entrée et de votre destination de sortie. Le serveur lit les données de votre URI d'entrée et écrit le OptimizeToursResponse final directement dans votre URI de sortie. Vous pouvez lire les itinéraires optimisés à partir de cet URI de sortie une fois l'opération terminée.
Voir un exemple de requête OptimizeToursUri
{ "input": { "uri": "gs://your-bucket/path/input/object.json" }, "output": { "uri": "gs://your-bucket/path/output/object.json" } }
BatchOptimizeTours
BatchOptimizeTours est un point de terminaison non bloquant destiné à plusieurs requêtes d'optimisation indépendantes traitées simultanément. Elle renvoie un ID d'opération de longue durée (LRO). Vous pouvez interroger cet ID à l'aide du point de terminaison GetOperation pour vérifier l'état de la requête et récupérer les itinéraires optimisés finaux.
Au lieu d'envoyer votre charge utile de manière intégrée, vous importez plusieurs OptimizeToursRequest dans Google Cloud Storage. Vous transmettez ensuite les URI Cloud Storage à l'API. Le serveur lit les données de vos URI d'entrée et écrit un OptimizeToursResponse pour chaque requête directement dans vos URI de sortie.
Voir un exemple de requête BatchOptimizeTours
{ "modelConfigs": [ { "inputConfig": { "gcsSource": { "uri": "gs://your-bucket/path/input/request_1.json" }, "dataFormat": "JSON" }, "outputConfig": { "gcsDestination": { "uri": "gs://your-bucket/path/output/response_1.json" }, "dataFormat": "JSON" } }, { "inputConfig": { "gcsSource": { "uri": "gs://your-bucket/path/input/request_2.json" }, "dataFormat": "JSON" }, "outputConfig": { "gcsDestination": { "uri": "gs://your-bucket/path/output/response_2.json" }, "dataFormat": "JSON" } } ] }