La API de Route Optimization tiene los siguientes endpoints:
OptimizeTours: Es un extremo de bloqueo para solicitudes únicas.OptimizeToursLongRunning: Es un extremo no bloqueante para solicitudes únicas con tiempos de resolución largos.OptimizeToursUri: Es un extremo no bloqueante para solicitudes únicas con grandes requisitos de datos.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.
Comparar endpoints
Usa la siguiente tabla para identificar el endpoint 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 | Mediano | 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 adecuado:
- Tipo de ejecución: Determina cómo tu aplicación controla la conexión de red mientras espera una respuesta. Existen dos tipos:
- Extremos de bloqueo: Mantienen la conexión abierta hasta que la API devuelve una respuesta.
- Extremos no bloqueantes: Procesan solicitudes en segundo plano. La API muestra de inmediato un ID de operación de larga duración (LRO) que puedes sondear más adelante para recuperar los resultados.
- Solicitudes procesadas: Determina si el extremo controla una sola solicitud de enrutamiento 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 intercaladas y tienen límites del servidor. Las solicitudes grandes omiten estos límites con Google Cloud Storage. Encuentra los límites exactos de tamaño de 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 solicitudes complejas tardan más en resolverse. Dado que el tiempo de resolución determina cuánto tiempo debe permanecer abierta una conexión, la elección del extremo depende de los límites de tiempo de espera. Para obtener más información, consulta Cómo configurar 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, sube la solicitud a un bucket de Cloud Storage y pasa 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 endpoint y se incluye un ejemplo de solicitud.
OptimizeTours
OptimizeTours es un endpoint de bloqueo diseñado para solicitudes únicas con tiempos de resolución cortos. Devuelve una ruta optimizada directamente en la respuesta.
Como es un endpoint de bloqueo, debes mantener abierta tu 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 aproximadamente 4 MB.
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 aproximadamente 8 MB.
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 endpoint no bloqueante diseñado para solicitudes únicas con tiempos de resolución largos y grandes requisitos de datos (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, sube tu OptimizeToursRequest a Google Cloud Storage. Luego, pasas los URIs de Cloud Storage para tu solicitud de entrada y tu 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 desde 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 procesar varias solicitudes de optimización independientes 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, sube 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 una solicitud de ejemplo 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" } } ] }