Route Optimization API 具有以下端点:
OptimizeTours:用于处理单个请求的阻塞端点。OptimizeToursLongRunning:用于处理求解时间较长的单个请求的非阻塞端点。OptimizeToursUri:一个非阻塞端点,用于处理具有大量数据要求的单个请求。BatchOptimizeTours:用于同时处理多个请求的非阻塞端点。
您选择的端点取决于您的使用情形、请求大小、预期解决时间,以及是否需要同时处理多个请求。
比较端点
请使用下表确定适合您需求的端点:
| 端点 | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| 执行类型 | 阻止 | 非阻塞 | 非阻塞 | 非阻塞 |
| 已处理的请求数 | 单身 | 单身 | 单身 | 多个 |
| 请求大小上限 | 小 | 中号 | 大 | 大 |
| 解答时间 | 短边 | 长 | 长 | 长 |
| 需要 Google Cloud Storage | 否 | 否 | 是 | 是 |
了解端点特征
上表列出了以下特征,可帮助您选择合适的端点:
- 执行类型:确定应用在等待响应时如何处理网络连接。有以下两种类型:
- 阻塞端点:保持连接处于打开状态,直到 API 返回响应。
- 非阻塞端点:在后台处理请求。API 会立即返回一个长时间运行的操作 (LRO) ID,您稍后可以轮询该 ID 以检索结果。
- 处理的请求数:确定端点是处理单个路由请求,还是同时处理多个请求。
- 最大请求大小:小型和中型请求会直接以内嵌方式发送,并具有服务器端限制。大型请求通过使用 Google Cloud Storage 绕过这些限制。在端点详细信息部分中查找确切的请求大小限制。
- 解决时间:简单请求可在短时间内解决,而复杂请求需要更长时间才能解决。由于求解时间决定了连接必须保持打开状态的时间,因此端点选择取决于超时限制。如需了解详情,请参阅配置超时和截止时间。
- 需要 Google Cloud Storage:处理大型请求和响应的端点直接从 Google Cloud Storage 读取数据和向 Google Cloud Storage 写入数据。您无需在 HTTP 请求中发送数据,而是将请求上传到 Cloud Storage 存储桶,并将 URI 传递给 API。
端点详情
Route Optimization API 有四个端点。以下各部分将说明每个端点的工作方式,并提供示例请求。
OptimizeTours
OptimizeTours 是一个阻塞端点,旨在处理求解时间较短的单个请求。它会直接在响应中返回优化后的路线。
由于它是阻塞端点,您必须保持网络连接处于打开状态,直到 API 完成对请求的处理,然后返回响应。此端点接受大小不超过大约 4MB 的内嵌请求。
查看 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,以检查请求状态并检索最终的优化路线。此端点接受最大约为 8MB 的内嵌请求。
查看 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" } } ] }