Elige un extremo

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"
      }
    }
  ]
}