La API de Route Optimization tiene los siguientes extremos:
OptimizeTours: Es un extremo de bloqueo para solicitudes individuales.OptimizeToursLongRunning: Es un extremo sin bloqueo para solicitudes individuales con tiempos de resolución largos.OptimizeToursUri: Es un extremo sin bloqueo para solicitudes únicas con requisitos de datos grandes.BatchOptimizeTours: Es un extremo no bloqueante para múltiples solicitudes procesadas de forma simultánea.
El extremo que elijas dependerá de tu caso de uso, el tamaño de la solicitud, el tiempo de resolución esperado y si necesitas procesar varias solicitudes de forma simultánea.
Compara endpoints
Usa la siguiente tabla para identificar el extremo adecuado para tus necesidades:
| Extremo | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| Tipo de ejecución | Bloqueado | Sin bloqueo | Sin bloqueo | Sin bloqueo |
| Solicitudes procesadas | Solteros | Solteros | Solteros | Múltiples |
| Tamaño máximo de la solicitud | Pequeño | Medio | Grande | Grande |
| Tiempo de resolución | Versión breve | Largo | Largo | Largo |
| Requiere Google Cloud Storage | No | No | Sí | Sí |
Comprende las características del extremo
En la tabla anterior, se enumeran las siguientes características para ayudarte a elegir el extremo correcto:
- Tipo de ejecución: Determina cómo tu aplicación
controla la conexión de red mientras espera una respuesta. Hay dos tipos:
- Extremos de bloqueo: Mantén la conexión abierta hasta que la API devuelva una respuesta.
- Extremos no bloqueantes: Procesan solicitudes en segundo plano. La API devuelve de inmediato un ID de operación de larga duración (LRO) que sondeas más adelante para recuperar los resultados.
- Solicitudes procesadas: Determina si el extremo controla una sola solicitud de ruta o procesa varias solicitudes de forma simultánea.
- Tamaño máximo de la solicitud: Las solicitudes pequeñas y medianas se envían directamente de forma intercalada y tienen límites del servidor. Las solicitudes grandes omiten estos límites con Google Cloud Storage. Encuentra los límites exactos del tamaño de la solicitud en las secciones de detalles de los extremos.
- Tiempo de resolución: Las solicitudes simples se pueden resolver en poco tiempo, mientras que las complejas tardan más. Debido a que el tiempo de resolución determina cuánto tiempo debe permanecer abierta una conexión, la elección del extremo depende de tus límites de tiempo de espera. Para obtener más información, consulta Configura tiempos de espera y plazos.
- Requiere Google Cloud Storage: Los extremos que procesan solicitudes y respuestas grandes leen y escriben datos directamente en Google Cloud Storage. En lugar de enviar los datos en la solicitud HTTP, subes la solicitud a un bucket de Cloud Storage y pasas el URI a la API.
Detalles del extremo
La API de Route Optimization tiene cuatro extremos. En las siguientes secciones, se explica cómo funciona cada extremo y se incluye una solicitud de ejemplo.
OptimizeTours
OptimizeTours es un extremo de bloqueo diseñado para solicitudes individuales
con tiempos de resolución cortos. Devuelve una ruta optimizada directamente en la respuesta.
Como es un extremo de bloqueo, debes mantener abierta la conexión de red
hasta que la API termine de procesar la solicitud para que devuelva una respuesta. Este
extremo acepta solicitudes intercaladas de hasta 4 MB aproximadamente.
Consulta un ejemplo de solicitud de 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 es un extremo no bloqueante para solicitudes
únicas con tiempos de resolución largos. Devuelve un ID de operación de larga duración (LRO).
Puedes sondear este ID con el extremo GetOperation para verificar el estado de la solicitud
y recuperar las rutas optimizadas finales. Este extremo acepta solicitudes intercaladas
de hasta 8 MB aproximadamente.
Consulta un ejemplo de solicitud de OptimizeToursLongRunning
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri es un extremo no bloqueante diseñado para solicitudes
únicas con tiempos de resolución largos y requisitos de datos grandes (más de 8 MB). Devuelve
un ID de operación de larga duración (LRO). Puedes sondear este ID con el extremo
GetOperation para verificar el estado de la solicitud.
En lugar de enviar tu carga útil intercalada, subes tu OptimizeToursRequest
a Google Cloud Storage. Luego, pasas los URI de Cloud Storage para la solicitud de entrada
y el destino de salida a la API. El servidor lee los
datos de tu URI de entrada y escribe el OptimizeToursResponse final directamente
en tu URI de salida. Puedes leer las rutas optimizadas de este URI de salida una vez
que se complete la operación.
Consulta un ejemplo de solicitud de OptimizeToursUri
{ "input": { "uri": "gs://your-bucket/path/input/object.json" }, "output": { "uri": "gs://your-bucket/path/output/object.json" } }
BatchOptimizeTours
BatchOptimizeTours es un extremo no bloqueante diseñado para
múltiples solicitudes de optimización independientes que se procesan de forma simultánea. Devuelve
un ID de operación de larga duración (LRO). Puedes sondear este ID con el
extremo GetOperation para verificar el estado de la solicitud y recuperar las rutas optimizadas
finales.
En lugar de enviar tu carga útil intercalada, subes varios
OptimizeToursRequest a Google Cloud Storage. Luego, pasas los URIs de Cloud Storage
a la API. El servidor lee los datos de tus URIs de entrada y escribe un
OptimizeToursResponse para cada solicitud directamente en tus URIs de salida.
Consulta un ejemplo de solicitud de 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" } } ] }