Pojedyncze nieblokujące metody interfejsu API służące do optymalizacji

W tym przewodniku przedstawiamy eksperymentalne wprowadzenie metod interfejsu API OptimizeToursLongRunningOptimizeToursUri, które umożliwiają użytkownikom wysyłanie pojedynczych nieblokujących żądań optymalizacji. W przypadku optymalizacji nieblokującej użytkownik szybko otrzymuje protokół Operation z metody, której można użyć do odwoływania się do stanu optymalizacji przez wywołanie GetOperation. Więcej informacji znajdziesz w sekcji Długotrwałe operacje.

Te metody nieblokujące zapewniają większą niezawodność niż metoda blokująca OptimizeTours, ponieważ klient nie musi utrzymywać połączenia z serwerem podczas wykonywania optymalizacji. W porównaniu z metodą BatchOptimizeTours nowe metody ułatwiają też debugowanie błędów, ponieważ każda optymalizacja jest powiązana z jedną długo trwającą operacją (LRO).

Użytkownicy, którzy wolą umieszczać żądanie optymalizacji w treści, mogą użyć metody OptimizeToursLongRunning, a użytkownicy, którzy wolą przesyłać żądania i odczytywać odpowiedzi za pomocą Google Cloud Storage, mogą użyć metody OptimizeToursUri.

OptimizeToursLongRunning

Przykład: wysyłanie OptimizeToursLongRunning żądania

Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:

  • Upewnij się, że masz skonfigurowane domyślne dane logowania aplikacji zgodnie z opisem w artykule Korzystanie z OAuth.
  • Ustaw PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.

    To polecenie wysyła do interfejsu Route Optimization API żądanie OptimizeToursLongRunning i otrzymuje powiązany z nim identyfikator operacji. Do sprawdzania stanu operacji możesz użyć metody GetOperation. Po zakończeniu operacji metadane zawierają też ostateczną wartość 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

Podobnie jak w przypadku BatchOptimizeTours, możesz używać OptimizeToursUri, aby nadal przechowywać żądanie optymalizacji i odpowiedź w Google Cloud Storage. Identyfikatory URI Cloud Storage muszą być podane w OptimizeToursUri wiadomości z prośbą. Zwracany Operationstan jest powiązany tylko z jednym przesłanym OptimizeToursRequest.

Przykład: wysyłanie OptimizeToursUri żądania

Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:

  • Upewnij się, że masz skonfigurowane domyślne dane logowania aplikacji zgodnie z opisem w artykule Korzystanie z OAuth.
  • Ustaw PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.

    To polecenie wysyła do interfejsu Route Optimization API żądanie OptimizeToursUri i otrzymuje powiązany z nim identyfikator operacji. Użyj metody GetOperation, aby sprawdzić stan operacji. Po zakończeniu operacji plik OptimizeToursResponse jest przechowywany zdalnie w ścieżce URI danych wyjściowych podanej w żądaniu.

    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