本指南將介紹 OptimizeToursLongRunning
和 OptimizeToursUri
API 方法的實驗性發布,使用者可透過這些方法提出單一非封鎖最佳化要求。在非封鎖最佳化中,使用者會從方法快速收到 Operation proto,可用於呼叫 GetOperation
,藉此參照最佳化狀態。詳情請參閱「長時間執行的作業」。
相較於封鎖 OptimizeTours
方法,這些非封鎖方法可提供可靠性優勢,因為用戶端在執行最佳化作業時,不需要維持與伺服器的連線。此外,與 BatchOptimizeTours
相比,這些新方法更容易偵錯失敗情形,因為每項最佳化作業都與單一長時間執行的作業 (LRO) 相關聯。
如要內嵌最佳化要求,請使用 OptimizeToursLongRunning
方法;如要上傳要求並使用 Google Cloud Storage 讀取回應,請使用 OptimizeToursUri
方法。
OptimizeToursLongRunning
範例:發出 OptimizeToursLongRunning
要求
提出要求前,請將下列參數替換為適合您環境的值:
- 請確認您已按照「使用 OAuth」一文所述,設定應用程式預設憑證。
將 PROJECT_NUMBER_OR_ID 設為 Cloud 專案編號或 ID。
下列指令會將
OptimizeToursLongRunning
要求傳送至 Route Optimization API,並接收與該要求相關聯的作業 ID。GetOperation
方法可用於查詢作業狀態。作業完成後,中繼資料也會包含最終的OptimizeToursResponse
。curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursLongRunning' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- <<EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ], } } EOM
OptimizeToursUri
與 BatchOptimizeTours
類似,您可以使用 OptimizeToursUri
,繼續在 Google Cloud Storage 中儲存最佳化要求和回應。Cloud Storage URI 必須在 OptimizeToursUri
要求訊息中指定。傳回的 Operation
狀態只與單一提交的 OptimizeToursRequest
相關聯。
範例:發出 OptimizeToursUri
要求
提出要求前,請將下列參數替換為適合您環境的值:
- 請確認您已按照「使用 OAuth」一文所述,設定應用程式預設憑證。
將 PROJECT_NUMBER_OR_ID 設為 Cloud 專案編號或 ID。
下列指令會將
OptimizeToursUri
要求傳送至 Route Optimization API,並接收與該要求相關聯的作業 ID。使用GetOperation
方法查詢作業狀態。作業完成後,OptimizeToursResponse
會遠端儲存在要求中提供的輸出 URI 路徑。curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursUri' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- <<EOM { "input": { "uri": "gs://bucket/path/input/object.json" }, "output": { "uri": "gs://bucket/path/output/object.json" } } EOM