Route Optimization API memiliki endpoint berikut:
OptimizeTours: Endpoint pemblokiran untuk permintaan tunggal.OptimizeToursLongRunning: Endpoint non-blocking untuk permintaan tunggal dengan waktu penyelesaian yang lama.OptimizeToursUri: Endpoint non-blocking untuk permintaan tunggal dengan persyaratan data yang besar.BatchOptimizeTours: Endpoint non-blocking untuk beberapa permintaan yang diproses secara bersamaan.
Endpoint yang Anda pilih bergantung pada kasus penggunaan, ukuran permintaan, perkiraan waktu penyelesaian, dan apakah Anda perlu memproses beberapa permintaan secara bersamaan.
Membandingkan endpoint
Gunakan tabel berikut untuk mengidentifikasi endpoint yang tepat untuk kebutuhan Anda:
| Endpoint | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| Jenis eksekusi | Pemblokiran | Tidak memblokir | Tidak memblokir | Tidak memblokir |
| Permintaan yang diproses | Lajang | Lajang | Lajang | Beberapa |
| Ukuran permintaan maksimum | Kecil | Sedang | Besar | Besar |
| Waktu penyelesaian | Pendek | Panjang | Panjang | Panjang |
| Memerlukan Google Cloud Storage | Tidak | Tidak | Ya | Ya |
Memahami karakteristik endpoint
Tabel sebelumnya mencantumkan karakteristik berikut untuk membantu Anda memilih endpoint yang tepat:
- Execution type: Menentukan cara aplikasi Anda menangani koneksi jaringan saat menunggu respons. Ada dua jenis:
- Endpoint pemblokiran: Biarkan koneksi tetap terbuka hingga API menampilkan respons.
- Endpoint non-blocking: Memproses permintaan di latar belakang. API segera menampilkan ID Operasi yang Berjalan Lama (LRO) yang Anda polling nanti untuk mengambil hasil.
- Permintaan yang diproses: Menentukan apakah endpoint menangani satu permintaan perutean, atau memproses beberapa permintaan secara bersamaan.
- Ukuran permintaan maksimum: Permintaan kecil dan sedang dikirim langsung secara inline dan memiliki batas sisi server. Permintaan besar melewati batas ini dengan menggunakan Google Cloud Storage. Temukan batas ukuran permintaan yang tepat di bagian detail endpoint.
- Waktu penyelesaian: Permintaan sederhana dapat diselesaikan dalam waktu singkat, sedangkan permintaan kompleks memerlukan waktu penyelesaian yang lebih lama. Karena waktu penyelesaian menentukan berapa lama koneksi harus tetap terbuka, pilihan endpoint Anda bergantung pada batas waktu Anda. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi waktu tunggu dan batas waktu.
- Memerlukan Google Cloud Storage: Endpoint yang memproses permintaan dan respons besar membaca dan menulis data langsung ke Google Cloud Storage. Daripada mengirim data dalam permintaan HTTP, Anda mengupload permintaan ke bucket Cloud Storage dan meneruskan URI ke API.
Detail endpoint
Route Optimization API memiliki empat endpoint. Bagian berikut menjelaskan cara kerja setiap endpoint dan menyertakan contoh permintaan.
OptimizeTours
OptimizeTours adalah endpoint pemblokiran yang ditujukan untuk permintaan tunggal
dengan waktu penyelesaian yang singkat. API ini menampilkan rute yang dioptimalkan langsung dalam respons.
Karena merupakan endpoint pemblokiran, Anda harus menjaga koneksi jaringan tetap terbuka
hingga API selesai memproses permintaan agar dapat menampilkan respons. Endpoint
ini menerima permintaan inline hingga sekitar 4 MB.
Lihat OptimizeTourscontoh permintaan
{ "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 adalah endpoint non-blocking untuk permintaan tunggal dengan waktu penyelesaian yang lama. API ini menampilkan ID Operasi yang Berjalan Lama (LRO).
Anda dapat melakukan polling ID ini menggunakan endpoint GetOperation untuk memeriksa status permintaan dan mengambil rute yang dioptimalkan terakhir. Endpoint ini menerima permintaan inline hingga sekitar 8 MB.
Lihat OptimizeToursLongRunningcontoh permintaan
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri adalah endpoint non-blocking yang ditujukan untuk permintaan tunggal dengan waktu penyelesaian yang lama dan persyaratan data yang besar (lebih dari 8 MB). API ini
menampilkan ID Operasi yang Berjalan Lama (LRO). Anda dapat melakukan polling ID ini menggunakan endpoint
GetOperation untuk memeriksa status permintaan.
Daripada mengirim payload secara inline, Anda mengupload OptimizeToursRequest
ke Google Cloud Storage. Kemudian, Anda meneruskan URI Cloud Storage untuk permintaan input dan tujuan output ke API. Server membaca
data dari URI input Anda dan menulis OptimizeToursResponse akhir langsung
ke URI output Anda. Anda dapat membaca rute yang dioptimalkan dari URI output ini setelah
operasi selesai.
Lihat OptimizeToursUricontoh permintaan
{ "input": { "uri": "gs://your-bucket/path/input/object.json" }, "output": { "uri": "gs://your-bucket/path/output/object.json" } }
BatchOptimizeTours
BatchOptimizeTours adalah endpoint non-blocking yang ditujukan untuk
beberapa permintaan pengoptimalan independen yang diproses secara bersamaan. API ini
akan menampilkan ID Operasi yang Berjalan Lama (LRO). Anda dapat melakukan polling ID ini menggunakan endpoint
GetOperation untuk memeriksa status permintaan dan mengambil rute yang dioptimalkan
akhir.
Daripada mengirim payload secara inline, Anda mengupload beberapa
OptimizeToursRequest ke Google Cloud Storage. Kemudian, Anda meneruskan URI Cloud Storage ke API. Server membaca data dari URI input Anda dan menulis OptimizeToursResponse untuk setiap permintaan langsung ke URI output Anda.
Lihat BatchOptimizeTourscontoh permintaan
{ "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" } } ] }