選擇端點

Route Optimization API 具有下列端點:

選擇端點時,請考量用途、要求大小、預期解決時間,以及是否需要同時處理多個要求。

比較端點

請參閱下表,找出符合需求的端點:

端點 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"
      }
    }
  ]
}