Die Route Optimization API hat die folgenden Endpunkte:
OptimizeTours: Ein blockierender Endpunkt für einzelne Anfragen.OptimizeToursLongRunning: Ein nicht blockierender Endpunkt für einzelne Anfragen mit langen Lösungszeiten.OptimizeToursUri: Ein nicht blockierender Endpunkt für einzelne Anfragen mit großen Datenanforderungen.BatchOptimizeTours: Ein nicht blockierender Endpunkt für mehrere gleichzeitig verarbeitete Anfragen.
Welchen Endpunkt Sie auswählen, hängt von Ihrem Anwendungsfall, der Anfragengröße, der erwarteten Lösungszeit und davon ab, ob Sie mehrere Anfragen gleichzeitig verarbeiten müssen.
Endpunkte vergleichen
Anhand der folgenden Tabelle können Sie den richtigen Endpunkt für Ihre Anforderungen ermitteln:
| Endpunkt | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| Ausführungstyp | Blockierungen | Nicht blockierend | Nicht blockierend | Nicht blockierend |
| Verarbeitete Anfragen | Single | Single | Single | Mehrere |
| Maximale Anfragengröße | Klein | Mittel | Groß | Groß |
| Zeit bis zur Lösung | Kurz | Lang | Long | Lang |
| Google Cloud Storage erforderlich | Nein | Nein | Ja | Ja |
Endpunktmerkmale verstehen
In der vorherigen Tabelle sind die folgenden Merkmale aufgeführt, die Ihnen bei der Auswahl des richtigen Endpunkts helfen sollen:
- Ausführungstyp: Bestimmt, wie Ihre Anwendung die Netzwerkverbindung verarbeitet, während sie auf eine Antwort wartet. Es gibt zwei Arten:
- Blockierende Endpunkte: Die Verbindung bleibt offen, bis die API eine Antwort zurückgibt.
- Nicht blockierende Endpunkte: Anfragen werden im Hintergrund verarbeitet. Die API gibt sofort eine ID für einen Vorgang mit langer Ausführungszeit zurück, die Sie später abfragen können, um Ergebnisse abzurufen.
- Verarbeitete Anfragen: Gibt an, ob der Endpunkt eine einzelne Routinganfrage verarbeitet oder mehrere Anfragen gleichzeitig.
- Maximale Anfragesgröße: Kleine und mittelgroße Anfragen werden direkt inline gesendet und unterliegen serverseitigen Limits. Bei großen Anfragen werden diese Limits durch die Verwendung von Google Cloud Storage umgangen. Die genauen Grenzwerte für die Anfragengröße finden Sie in den Abschnitten mit den Endpunktdetails.
- Bearbeitungszeit: Einfache Anfragen können in kurzer Zeit bearbeitet werden, während komplexe Anfragen länger dauern. Da die Lösungszeit bestimmt, wie lange eine Verbindung geöffnet bleiben muss, hängt die Auswahl des Endpunkts von Ihren Zeitlimitvorgaben ab. Weitere Informationen finden Sie unter Timeouts und Fristen konfigurieren.
- Erfordert Google Cloud Storage: Endpunkte, die große Anfragen und Antworten verarbeiten, lesen und schreiben Daten direkt in Google Cloud Storage. Anstatt die Daten in der HTTP-Anfrage zu senden, laden Sie die Anfrage in einen Cloud Storage-Bucket hoch und übergeben den URI an die API.
Endpunktdetails
Die Route Optimization API hat vier Endpunkte. In den folgenden Abschnitten wird die Funktionsweise der einzelnen Endpunkte erläutert und eine Beispielanfrage angegeben.
OptimizeTours
OptimizeTours ist ein blockierender Endpunkt, der für einzelne Anfragen mit kurzen Lösungszeiten vorgesehen ist. In der Antwort wird direkt eine optimierte Route zurückgegeben.
Da es sich um einen blockierenden Endpunkt handelt, müssen Sie Ihre Netzwerkverbindung offen halten, bis die API die Verarbeitung der Anfrage abgeschlossen hat, damit eine Antwort zurückgegeben werden kann. Dieser Endpunkt akzeptiert Inline-Anfragen mit einer Größe von bis zu etwa 4 MB.
OptimizeTours-Beispielanfrage
{ "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 ist ein nicht blockierender Endpunkt für einzelne Anfragen mit langen Lösungszeiten. Es wird eine ID des Vorgangs mit langer Ausführungszeit zurückgegeben.
Sie können diese ID mit dem GetOperation-Endpunkt abfragen, um den Status der Anfrage zu prüfen und die endgültigen optimierten Routen abzurufen. Dieser Endpunkt akzeptiert Inline-Anfragen mit einer Größe von bis zu etwa 8 MB.
OptimizeToursLongRunning-Beispielanfrage
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri ist ein nicht blockierender Endpunkt, der für einzelne Anfragen mit langen Lösungszeiten und großen Datenanforderungen (über 8 MB) vorgesehen ist. Es wird eine ID für einen Vorgang mit langer Ausführungszeit zurückgegeben. Sie können diese ID mit dem GetOperation-Endpunkt abfragen, um den Status der Anfrage zu prüfen.
Anstatt die Nutzlast inline zu senden, laden Sie Ihre OptimizeToursRequest in Google Cloud Storage hoch. Anschließend übergeben Sie die Cloud Storage-URIs für Ihre Eingabeanfrage und Ihr Ausgabeziel an die API. Der Server liest die Daten aus Ihrem Eingabe-URI und schreibt die endgültige OptimizeToursResponse direkt in Ihren Ausgabe-URI. Sie können die optimierten Routen aus diesem Ausgabeari lesen, sobald der Vorgang abgeschlossen ist.
OptimizeToursUri-Beispielanfrage
{ "input": { "uri": "gs://your-bucket/path/input/object.json" }, "output": { "uri": "gs://your-bucket/path/output/object.json" } }
BatchOptimizeTours
BatchOptimizeTours ist ein nicht blockierender Endpunkt, der für mehrere unabhängige Optimierungsanfragen vorgesehen ist, die gleichzeitig verarbeitet werden. Es wird eine ID für einen Vorgang mit langer Ausführungszeit zurückgegeben. Sie können diese ID über den GetOperation-Endpunkt abfragen, um den Status der Anfrage zu prüfen und die endgültigen optimierten Routen abzurufen.
Anstatt die Nutzlast inline zu senden, laden Sie mehrere OptimizeToursRequest in Google Cloud Storage hoch. Anschließend übergeben Sie die Cloud Storage-URIs an die API. Der Server liest die Daten aus Ihren Eingabe-URIs und schreibt für jede Anfrage ein OptimizeToursResponse direkt in Ihre Ausgabe-URIs.
BatchOptimizeTours-Beispielanfrage
{ "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" } } ] }