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 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 các yêu cầu tối ưu hoá không chặn duy nhất. Trong quá trình tối ưu hoá không chặn, người dùng sẽ nhanh chóng nhận được một giao thức Operation từ phương thức có thể dùng để tham chiếu trạng thái tối ưu hoá bằng cách gọi GetOperation. Hãy xem phần Các thao tác diễn ra trong thời gian dài để biết thêm thông tin 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 chặn OptimizeTours 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 bạn gỡ lỗi các lỗi dễ dàng hơn so với BatchOptimizeTours vì mỗi hoạt động tối ưu hoá đều được liên kết với một Thao tác kéo dài (LRO).

Những người dùng muốn nội tuyến yêu cầu tối ưu hoá có thể sử dụng phương thức OptimizeToursLongRunning, trong khi những người dùng muốn tải yêu cầu lên và đọc phản hồi 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 Cloud.

    Lệnh sau đây sẽ gửi yêu cầu OptimizeToursLongRunning đến Route Optimization API và nhận được một mã nhận dạng thao tác được 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 và phản hồi tối ưu hoá 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 duy nhất đã 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 Cloud.

    Lệnh sau đây sẽ gửi yêu cầu OptimizeToursUri đến Route Optimization API và nhận được một mã nhận dạng thao tác được 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