GAPI İstemci Kitaplıkları

Sunucudan sunucuya (güvenilir) iletişimde, ham REST veya gRPC üzerinden geliştirme yapmak yerine daha iyi bir deneyim için dile özgü GAPI istemci kitaplıkları kullanmanızı öneririz. Bu istemcilerin temel aldığı protobuf dosyalarına https://github.com/googleapis/googleapis/tree/master/google/maps/fleetengine/delivery/v1 adresinden erişilebilir.

Uygulamanızın dilinde kitaplıklar yoksa gRPC veya Fleet Engine REST uç noktalarını kullanmanızı öneririz.

NOT: GAPIC kitaplıkları güvenilir (sunucu) ortamlarda çalışacak şekilde tasarlanmıştır. JWT'ler gerekmez. Uygulama Varsayılan Kimlik Bilgilerini uygun deliveryAdmin rolüyle birlikte kullanın.

Java

Java kitaplıkları google.maps.fleetengine.delivery.v1 altında yayınlanmıştır.

Gradle

plugins {
  id "maven-publish"
  id "com.google.cloud.artifactregistry.gradle-plugin" version "2.1.4"
}

publishing {
  repositories {
    maven {
      url "artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven"
    }
  }
}

repositories {
  maven {
    url "artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven"
  }
}

dependencies {
  implementation 'com.google.maps:gapic-google-maps-fleetengine-delivery-v1-java:latest.release'
}

Maven

<project>
  <distributionManagement>
    <snapshotRepository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
    </snapshotRepository>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
    </repository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <build>
    <extensions>
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.1.4</version>
      </extension>
    </extensions>
  </build>

  <dependency>
    <groupId>com.google.maps</groupId>
    <artifactId>gapic-google-maps-fleetengine-delivery-v1-java</artifactId>
    <version>LATEST</version>
  </dependency>
</project>

Java ortamında imzalı JSON web jetonları oluşturmak için Java için Fleet Engine Yetkilendirme Kitaplığı'ndan yararlanabilirsiniz.

Fleet Engine API ile etkileşimle ilgili Java örneklerini Fleet Engine'i kullanmaya başlama sayfasında görebilirsiniz.

Node.js / TypeScript

npm

Kitaplık URL'sini package.json öğesinin dependencies bölümünde belirtebilirsiniz:

{
  "dependencies": {
    "@googlemaps/fleetengine-delivery": "https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/maps-fleetengine-delivery-v1-nodejs.tar.gz",
    "google-auth-library": "^9.2.0",
    "googleapis": "^118.0.0"
  }
}

Örnek kod:

const {google} = require('googleapis');
const fleetengine = require('@googlemaps/fleetengine-delivery');
const {GoogleAuth} = require('google-auth-library');

// CONSTANTS
const PROJECT_ID = 'YOUR_GCP_PROJECT_NAME';
const VEHICLE_ID = 'YOUR_VEHICLE_ID';
const SERVICE_ACCOUNT = 'YOUR_SERVICE_ACCOUNT';
const SERVICE_ACCOUNT_EMAIL = `${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com`;

// CREATE A JWT FOR AUTHENTICATION
const HOWLONG = 55 * 60;          // 55 minutes, cannot be more than 60 minutes

async function signToken(claims) {
  const googleAuth = new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  });
  const authClient = await googleAuth.getClient();
  google.options({auth: authClient});

  const now = Math.round(Date.now() / 1000);
  const iat = now - 300;
  const exp = now + HOWLONG;

  const request = {
      name: `projects/-/serviceAccounts/${SERVICE_ACCOUNT_EMAIL}`,
      requestBody: {
          payload: JSON.stringify({
              iss: SERVICE_ACCOUNT_EMAIL,
              sub: SERVICE_ACCOUNT_EMAIL,
              aud: 'https://fleetengine.googleapis.com/',
              iat: iat,
              exp: exp,
              authorization: claims
          }),
      }
  };

  const response = await google.iamcredentials('v1').projects.serviceAccounts
      .signJwt(request)
      .catch((err) => {
        if (err.errors) throw err.errors;
        else throw err;
      });
  return response.data.signedJwt;
}

// MAKE A REQUEST
async function main() {
    const claims = {
      deliveryvehicleid: VEHICLE_ID
    };

    signToken(claims).then(token => {
      let auth = new GoogleAuth();
      auth.cachedCredential = new AuthorizationHeaderProvider(token);
      const client = new fleetengine.DeliveryServiceClient({ auth: auth });

      client.getDeliveryVehicle({name: `providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}`}).then(function(resp) {
        console.log(resp);
      }, function(err) {
        console.log(err);
      });
    });
}

class AuthorizationHeaderProvider {
    constructor(token) {
        this.token = token;
    }

    getRequestMetadata(url, callback) {
        callback(null, {'authorization': `Bearer ${this.token}`});
    }
}

main().catch(console.error);

Go

Go kitaplığı https://pkg.go.dev/cloud.google.com/go/maps adresinde modül olarak paket hâlinde sunulur.

Python

https://pypi.org/project/google-maps-fleetengine-delivery/0.1.0/ adresine göz atın

pip

pip install google-auth
pip install google-maps-fleetengine-delivery

C#

C# kitaplığı için yükleme talimatlarını https://www.nuget.org/packages/Google.Maps.FleetEngine.Delivery.V1 adresinde bulabilirsiniz.

PHP

PHP kitaplığını https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/google-maps-fleetengine-delivery-v1-php.tar.gz adresinden indirebilirsiniz.

Ruby

https://rubygems.org/gems/google-maps-fleet_engine-delivery adresine göz atın.