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 读取数据和向其写入数据。您可以将请求上传到 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" } } ] }