Một phương thức API tối ưu hoá không chặn

Hướng dẫn này giới thiệu về bản phát hành thử nghiệm của các phương thức API OptimizeToursLongRunningOptimizeToursUri, cho phép người dùng đưa ra một yêu cầu tối ưu hoá không chặn. Trong quá trình tối ưu hoá không chặn, người dùng nhanh chóng nhận được một proto Operation từ phương thức có thể dùng để tham chiếu trạng thái của quá trình tối ưu hoá bằng cách gọi GetOperation. Hãy xem phần Thao tác chạy trong thời gian dài để biết thêm chi tiết.

Các phương thức không chặn này mang lại lợi ích về độ tin cậy so với phương thức OptimizeTours chặn vì ứng dụng không cần duy trì kết nối với máy chủ trong khi quá trình tối ưu hoá đang được thực thi. Ngoài ra, các phương thức mới này giúp gỡ lỗi lỗi dễ dàng hơn so với BatchOptimizeTours vì mỗi hoạt động tối ưu hoá được liên kết với một Hoạt động chạy trong thời gian dài (LRO).

Những người dùng muốn đưa yêu cầu tối ưu hoá vào cùng dòng có thể sử dụng phương thức OptimizeToursLongRunning, còn những người dùng muốn tải các yêu cầu và phản hồi đọc lên bằng Google Cloud Storage có thể sử dụng phương thức OptimizeToursUri.

OptimizeToursLongRunning

Ví dụ: Tạo yêu cầu OptimizeToursLongRunning

Trước khi đưa ra yêu cầu, hãy thay thế các tham số sau bằng các giá trị phù hợp với môi trường của bạn:

  • Đảm bảo bạn đã định cấu hình Thông tin xác thực mặc định của ứng dụng như mô tả trong phần Sử dụng OAuth.
  • Đặt PROJECT_NUMBER_OR_ID thành số hoặc mã dự án trên Google Cloud.

    Lệnh sau đây sẽ gửi yêu cầu OptimizeToursLongRunning đến Route Optimization API và nhận mã hoạt động liên kết với yêu cầu đó. Bạn có thể dùng phương thức GetOperation để truy vấn trạng thái của thao tác. Sau khi thao tác hoàn tất, siêu dữ liệu cũng chứa OptimizeToursResponse cuối cùng.

    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

Giống như BatchOptimizeTours, bạn có thể sử dụng OptimizeToursUri để tiếp tục lưu trữ yêu cầu tối ưu hoá và phản hồi trên Google Cloud Storage. Bạn phải chỉ định URI Cloud Storage trong thông báo yêu cầu OptimizeToursUri. Trạng thái Operation được trả về chỉ liên kết với một OptimizeToursRequest đã gửi.

Ví dụ: Tạo yêu cầu OptimizeToursUri

Trước khi đưa ra yêu cầu, hãy thay thế các tham số sau bằng các giá trị phù hợp với môi trường của bạn:

  • Đảm bảo bạn đã định cấu hình Thông tin xác thực mặc định của ứng dụng như mô tả trong phần Sử dụng OAuth.
  • Đặt PROJECT_NUMBER_OR_ID thành số hoặc mã dự án trên Google Cloud.

    Lệnh sau đây sẽ gửi yêu cầu OptimizeToursUri đến Route Optimization API và nhận mã hoạt động liên kết với yêu cầu đó. Sử dụng phương thức GetOperation để truy vấn trạng thái của thao tác. Sau khi thao tác hoàn tất, OptimizeToursResponse sẽ được lưu trữ từ xa trên đường dẫn URI đầu ra được cung cấp trong yêu cầu.

    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