选择端点

Route Optimization API 具有以下端点:

您选择的端点取决于您的使用情形、请求大小、预期解决时间,以及是否需要同时处理多个请求。

比较端点

请使用下表确定适合您需求的端点:

端点 OptimizeTours OptimizeToursLongRunning OptimizeToursUri BatchOptimizeTours
执行类型 阻止 非阻塞 非阻塞 非阻塞
处理的请求数 单身 单身 单身 多个
请求大小上限 中号
解决时间 短边
需要 Google Cloud Storage

了解端点特征

上表列出了以下特征,可帮助您选择合适的端点:

  • 执行类型:确定应用在等待响应时如何处理网络连接。有两种类型:
    • 阻塞端点:保持连接处于打开状态,直到 API 返回响应。
    • 非阻塞端点:在后台处理请求。API 会立即返回一个长时间运行的操作 (LRO) ID,您稍后可以轮询该 ID 以检索结果。
  • 处理的请求数:确定端点是处理单个路由请求,还是同时处理多个请求。
  • 最大请求大小:小型和中型请求会直接以内嵌方式发送,并具有服务器端限制。大型请求会使用 Google Cloud Storage 绕过这些限制。您可以在端点详情部分找到确切的请求大小限制。
  • 解决时间:简单请求可在短时间内解决,而复杂请求需要更长时间才能解决。由于解决时间决定了连接必须保持打开的时间,因此端点选择取决于超时限制。如需了解详情,请参阅配置超时和截止时间
  • 需要 Google Cloud Storage:处理大型请求和响应的端点直接从 Google Cloud Storage 读取数据和向其写入数据。您可以将请求上传到 Cloud Storage 存储桶,并将 URI 传递给 API,而不是在 HTTP 请求中发送数据。

端点详情

Route Optimization API 有四个端点。以下部分介绍了每个端点的工作方式,并提供了一个请求示例。

OptimizeTours

OptimizeTours 是一个阻塞端点,旨在处理求解时间较短的单个请求。它会直接在响应中返回优化后的路线。 由于它是阻塞端点,因此您必须保持网络连接处于打开状态,直到 API 完成请求处理并返回响应。此端点接受的最大内嵌请求大小约为 4 MB。

请参阅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 是一个非阻塞端点,适用于求解时间较长的单个请求。它会返回一个长时间运行的操作 (LRO) ID。 您可以使用 GetOperation 端点轮询此 ID,以检查请求状态并检索最终优化后的路线。此端点接受大小不超过约 8 MB 的内嵌请求。

请参阅OptimizeToursLongRunning示例请求

{
  "model": {
    "shipments":[
      {
        "pickups":[
          {
            "arrivalLocation": {
              "latitude": 37.425062,
              "longitude": -122.095355
            }
          }
        ]
      }
    ],
    "vehicles":[
      {
        "travelMode": "DRIVING",
        "costPerKilometer": 1.0
      }
    ]
  }
}
    

OptimizeToursUri

OptimizeToursUri 是一个非阻塞端点,适用于求解时间长且数据要求高(超过 8MB)的单个请求。它会返回长时间运行的操作 (LRO) ID。您可以使用 GetOperation 端点轮询此 ID,以检查请求状态。

您可以将 OptimizeToursRequest 上传到 Google Cloud Storage,而不是以内嵌方式发送载荷。然后,您将输入请求和输出目的地的 Cloud Storage URI 传递给 API。服务器从输入 URI 读取数据,并将最终的 OptimizeToursResponse 直接写入输出 URI。操作完成后,您可以从此输出 URI 读取优化后的路线。

请参阅OptimizeToursUri示例请求

{
  "input": {
    "uri": "gs://your-bucket/path/input/object.json"
  },
  "output": {
    "uri": "gs://your-bucket/path/output/object.json"
  }
}
    

BatchOptimizeTours

BatchOptimizeTours 是一个非阻塞端点,旨在同时处理多个独立的优化请求。它会返回长时间运行的操作 (LRO) ID。您可以使用 GetOperation 端点轮询此 ID,以检查请求状态并检索最终的优化路线。

您可以将多个 OptimizeToursRequest 上传到 Google Cloud Storage,而不是以内嵌方式发送载荷。然后,您将 Cloud Storage URI 传递给 API。服务器从输入 URI 读取数据,并将每个请求的 OptimizeToursResponse 直接写入输出 URI。

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