Route Optimization API'yi ayarlama

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.

  1. Route Optimization API kullanımı ve faturalandırması sayfasında kullanım için faturalandırmayı ve maliyeti inceleyin.
  2. Google Cloud Hesabınız olduğunu doğrulayın.

    Google Cloud Console'da oturum açın
  3. Faturalandırmanın etkin olduğu bir Google Cloud projeniz olduğunu doğrulayın.

    Faturalandırma sayfasına gidin
    1. Faturalandırma sayfasını açmak için projenizi seçin.
    2. 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

  1. Google Cloud Console'da ürün sayfasını açın:

    Route Optimization API'yi etkinleştirme
  2. Etkinleş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. Buna OptimizeTours ve BatchOptimizeTours yöntemlerini çağırma ve GetOperation yö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, OptimizeTours yöntemini çağırma ve GetOperation kullanarak uzun süreli işlemlere erişme olanağı sağlar.
Cloud SDK'yı kullanarak bir alt öğe için bağlama oluşturarak rol atayabilirsiniz:
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:

  1. gcloud KSA'yı yükleyip ilk kullanıma hazırlayın. Daha fazla bilgi için gcloud CLI'yi yükleme başlıklı makaleyi inceleyin.

  2. gcloud CLI ile kimlik doğrulama:

    gcloud auth application-default login
  3. 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 Authorization başlığında iletin:

    gcloud auth application-default print-access-token

    Döndürülen jetonun kapsamı https://www.googleapis.com/auth/cloud-platform.

  • X-Goog-User-Project baş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:

  1. 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"
    }
    }
    EOM
    
  2. curl komutunu kopyalamak için kod örneğinde Kopyala'yı tıklayın.

  3. 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.