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 的資料。您不必在 HTTP 要求中傳送資料,而是將要求上傳至 Cloud Storage 值區,然後將 URI 傳遞至 API。
端點詳細資料
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 是非封鎖端點,適用於解決時間較長且資料需求量較大 (超過 8 MB) 的單一要求。並傳回長時間執行的作業 (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" } } ] }