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

W tym przewodniku opisujemy eksperymentalne wdrożenie metod interfejsu API OptimizeToursLongRunning i OptimizeToursUri, które umożliwiają użytkownikom wysyłanie pojedynczych nieblokujących próśb o optymalizację. W przypadku optymalizacji nieblokującej użytkownik szybko otrzymuje z metody protokół operacji, którego może użyć do odwołania się do stanu optymalizacji, wywołując funkcję GetOperation. Więcej informacji znajdziesz w artykule 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. Nowe metody ułatwiają też debugowanie niepowodzeń w porównaniu z metodą BatchOptimizeTours, ponieważ każda optymalizacja jest powiązana z jedną długotrwałą operacją (LRO).

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

OptimizeToursLongRunning

Przykład: wysłanie OptimizeToursLongRunning

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

  • Upewnij się, że domyślne dane logowania aplikacji są skonfigurowane zgodnie z opisem w artykule Korzystanie z protokołu OAuth.
  • Ustaw wartość PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.

    Podane niżej polecenie wysyła do interfejsu Route Optimization API żądanie OptimizeToursLongRunning i otrzymuje powiązany z nim identyfikator operacji. Metody GetOperation można używać do uzyskiwania informacji o stanie operacji. Po zakończeniu operacji metadane zawierają również ostateczną wartość parametru 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 BatchOptimizeTours możesz użyć OptimizeToursUri, aby nadal przechowywać żądanie optymalizacji i odpowiedź w Google Cloud Storage. Identyfikatory URI Cloud Storage muszą być określone w wiadomości OptimizeToursUri. Zwrócony stan Operation jest powiązany tylko z jednym przesłanym plikiem OptimizeToursRequest.

Przykład: wysłanie OptimizeToursUri

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

  • Upewnij się, że domyślne dane logowania aplikacji są skonfigurowane zgodnie z opisem w artykule Korzystanie z protokołu OAuth.
  • Ustaw wartość PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.

    Podane niżej polecenie wysyła do interfejsu Route Optimization API żądanie OptimizeToursUri i otrzymuje powiązany z nim identyfikator operacji. Aby sprawdzić stan operacji, użyj metody GetOperation. Po zakończeniu operacji OptimizeToursResponse jest przechowywany zdalnie na ścieżce URI wyjściowego 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