Bu dokümanda, Route Optimization API'yi kullanmaya başlamak için uygulamanız gereken adımlar açıklanmaktadır.
Ön koşullar
Bu prosedür, faturalandırmanın etkin olduğu bir Google Cloud Hesabı ve Google Cloud projesi oluşturma konusunda size yol gösterir. Ayrıca Route Optimization API'yi kullanırken nasıl ücretlendirildiğinizi de bilmeniz gerekir.
- Route Optimization API kullanımı ve faturalandırması sayfasında kullanım için faturalandırmayı ve maliyeti inceleyin.
Google Cloud Hesabınız olduğunu doğrulayın.
Google Cloud Console'da oturum açınFaturalandırmanın etkin olduğu bir Google Cloud projeniz olduğunu doğrulayın.
Faturalandırma sayfasına gidin- Faturalandırma sayfasını açmak için projenizi seçin.
Faturalandırma sayfasında:
- Seçilen proje için faturalandırma zaten etkinleştirilmişse ve yalnızca tek bir faturalandırma hesabınız varsa Faturalandırma sayfası açılır.
- Birden fazla faturalandırma hesabınız varsa projeyle ilişkili faturalandırma hesabı hakkındaki ayrıntıları görmek için Bağlı faturalandırma hesabına git'i seçin.
- Bir faturalandırma hesabı varsa ancak projeyle ilişkilendirilmemişse bir faturalandırma hesabını projeye bağlamanız istenir.
- Faturalandırma hesabı yoksa veya yeni bir faturalandırma hesabı oluşturmak istiyorsanız yeni bir faturalandırma hesabı oluşturmak için Faturalandırma Hesaplarını Yönet'i seçin. Daha fazla bilgi için Yeni bir self servis Cloud Faturalandırma Hesabı oluşturma başlıklı makaleyi inceleyin.
API'yi etkinleştirme
Route Optimization API'yi kullanabilmek için Google Cloud Console'u veya gcloud komutunu kullanarak Google Cloud projenizde etkinleştirmeniz gerekir.
API'yi etkinleştirmek için:
Konsol
Google Cloud Console'da ürün sayfasını açın:
Route Optimization API'yi etkinleştirmeEtkinleştir düğmesini tıklayın.
gcloud
gcloud services enable \ --project "PROJECT" \ "routeoptimization.googleapis.com"
Google Cloud SDK, Cloud SDK yüklemesi ve aşağıdaki komutlar hakkında daha fazla bilgi edinin:
Google Haritalar Platformu ürünleri, yetkisiz kullanımı önlemek için API çağrılarının bir OAuth jetonu içermesini gerektirir.
OAuth jetonu oluşturma
Route Optimization API, kimlik doğrulama için OAuth 2.0'ı destekler. Google, web sunucusu senaryoları gibi yaygın OAuth 2.0 senaryolarını destekler.
Bu belgede, geliştirme ortamınızda Route Optimization API çağrısına OAuth jetonunun nasıl iletileceği açıklanmaktadır. OAuth'u üretim ortamında kullanma hakkında daha fazla bilgi için Google'da kimlik doğrulama yöntemleri başlıklı makaleyi inceleyin.
Sunucuya API istekleri göndererek Google Maps API'leri doğrudan çağırabilir veya kodunuzu basitleştirmek için istemci kitaplıklarını kullanabilirsiniz. Google Haritalar; Go, Java, Node.js ve Python için istemci kitaplıkları sağlar. Daha fazla bilgi için Route Optimization API istemci kitaplıkları başlıklı makaleyi inceleyin.
OAuth'a genel bakış
Dağıtım ortamınıza bağlı olarak OAuth ile erişim jetonlarını çeşitli şekillerde oluşturabilir ve yönetebilirsiniz.
Uygulamanız ile bir Google hizmeti arasındaki sunucudan sunucuya etkileşimler için OAuth 2.0'ı kullanabilirsiniz. Bu senaryoda, bireysel bir kullanıcı yerine uygulamanızla ilişkili bir hizmet hesabı kullanırsınız. Kullanıcıları doğrudan dahil etmeden hizmet hesabını kullanarak API istekleri gönderebilirsiniz. Kimlik doğrulama yöntemleri hakkında daha fazla bilgi için Google'da kimlik doğrulama yöntemleri başlıklı makaleyi inceleyin.
Alternatif olarak Route Optimization API'yi bir Android veya iOS mobil uygulamasına entegre edebilirsiniz. Farklı dağıtım ortamları için OAuth'u kullanma ve erişim jetonlarını yönetme hakkında daha fazla bilgi edinmek isterseniz Google API'lerine erişmek için OAuth 2.0'ı kullanma başlıklı makaleyi inceleyin.
OAuth kapsamları
Route Optimization API ile OAuth kullanmak için OAuth jetonuna aşağıdaki kapsamı atamanız gerekir:
https://www.googleapis.com/auth/cloud-platform
Rolleri yapılandırma
Bu belgede, Route Optimization için Identity and Access Management (IAM) rolleri ve izinleri hakkında bilgi verilmektedir. IAM, belirli Route Optimization kaynaklarına ayrıntılı erişim izni vermenize olanak tanır ve diğer kaynaklara erişimi engellemeye yardımcı olur. IAM, en az ayrıcalık güvenlik ilkesini uygulamanıza olanak tanır. Bu ilkeye göre, hiç kimsenin ihtiyaç duyduğundan daha fazla izni olmamalıdır.
Bir alt hesap (kullanıcı, grup veya hizmet hesabı) Google Cloud API'yi çağırdığında, bu alt hesabın kaynağı kullanmak için uygun IAM izinlerine sahip olması gerekir. Bir ana hesaba gerekli izinleri vermek için ana hesaba bir IAM rolü verirsiniz.
Genel olarak Google Cloud'da erişimi yönetme hakkında bilgi edinmek için IAM'ye genel bakış başlıklı makaleyi inceleyin.
Ana hesapların Route Optimization'a erişmesine izin veren önceden tanımlanmış IAM rolleri şunlardır:
-
Route Optimization Editor (roles/routeoptimization.editor): Kullanıcıya veya hizmet hesabına, projedeki Route Optimization kaynaklarına okuma ve yazma erişimi verir. BunaOptimizeToursveBatchOptimizeToursyöntemlerini çağırma veGetOperationyöntemini kullanarak uzun süreli işlemleri alma özelliği dahildir. -
Route Optimization Viewer (roles/routeoptimization.viewer): Projedeki Route Optimization kaynaklarına salt okuma erişimi verir. Bu rol,OptimizeToursyöntemini çağırma veGetOperationkullanarak uzun süreli işlemlere erişme olanağı sağlar.
gcloud projects add-iam-policy-binding PROJECT \ --member user:someone@example.com \ --role roles/routeoptimization.editor
Daha fazla bilgi için Google Cloud Console'u kullanarak IAM rolü verme başlıklı makaleyi inceleyin.
Örnek: Yerel geliştirme ortamınızda REST API çağrılarını deneme
Jeton oluşturan bir ortamınız yoksa ve Route Optimization API'yi OAuth jetonuyla denemek istiyorsanız bu bölümdeki prosedürü uygulayın.
Bu örnekte, çağrıyı yapmak için Uygulama Varsayılan Kimlik Bilgileri (ADC) tarafından sağlanan OAuth jetonunun nasıl kullanılacağı açıklanmaktadır. İstemci kitaplıklarıyla Google API'lerini çağırmak için ADC'yi kullanma hakkında daha fazla bilgi edinmek istiyorsanız İstemci kitaplıklarını kullanarak kimlik doğrulama başlıklı makaleyi inceleyin.
Aşağıdaki REST prosedürünü yalnızca geliştirme veya test için kullanın, üretim için kullanmayın.
Ön koşullar
ADC kullanarak REST isteği göndermeden önce ADC'ye kimlik bilgileri sağlamak için gcloud CLI'yı kullanın:
gcloudKSA'yı yükleyip ilk kullanıma hazırlayın. Daha fazla bilgi için gcloud CLI'yi yükleme başlıklı makaleyi inceleyin.gcloudCLI ile kimlik doğrulama:gcloud auth application-default login
Kimlik bilgilerinizi ADC tarafından kullanılan yerel kimlik bilgisi dosyasına kaydetmek için oturum açma işlemini tamamlayın.
Daha fazla bilgi için Yerel geliştirme ortamı için ADC'yi ayarlama başlıklı makaleyi inceleyin.
REST isteği gönderme
Bu örnekte iki istek başlığı iletilir:
Jetonu oluşturmak için aşağıdaki komutu kullanarak OAuth jetonunu
Authorizationbaşlığında iletin:gcloud auth application-default print-access-tokenDöndürülen jetonun kapsamı
https://www.googleapis.com/auth/cloud-platform.X-Goog-User-Projectbaşlığında, faturalandırmanın etkin olduğu Google Cloud projenizin kimliğini veya adını iletin.
OAuth jetonu kullanarak Route Optimization API'yi çağırmak için aşağıdaki adımları uygulayın:
Aşağıdaki kod örneğinde PROJECT_NUMBER_OR_ID yerine Google Cloud proje numaranızı veya kimliğinizi yazın:
curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data-binary @- << EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.79581, "longitude": -122.4218856 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 }, "endLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00" } } EOMcurlkomutunu kopyalamak için kod örneğinde Kopyala'yı tıklayın.Komutu bir terminal penceresine yapıştırıp çalıştırın.
Yanıt bir JSON nesnesi olur:
{
"routes": [
{
"vehicleStartTime": "2023-01-14T00:00:00Z",
"vehicleEndTime": "2023-01-14T00:39:22Z",
"visits": [
{
"isPickup": true,
"startTime": "2023-01-14T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2023-01-14T00:19:53Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2023-01-14T00:00:00Z"
},
{
"travelDuration": "1193s",
"travelDistanceMeters": 9007,
"waitDuration": "0s",
"totalDuration": "1193s",
"startTime": "2023-01-14T00:00:00Z"
},
{
"travelDuration": "1169s",
"travelDistanceMeters": 9546,
"waitDuration": "0s",
"totalDuration": "1169s",
"startTime": "2023-01-14T00:19:53Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2362s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2362s",
"travelDistanceMeters": 18553
}
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2362s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2362s",
"travelDistanceMeters": 18553
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2023-01-14T00:00:00Z",
"latestVehicleEndTime": "2023-01-14T00:39:22Z"
}
}
Sorun giderme
İsteğiniz, bu API'nin son kullanıcı kimlik bilgilerini desteklemediğini belirten bir hata mesajı döndürürse ADC kurulumunuzla ilgili sorunları giderme başlıklı makaleyi inceleyin.