GAPI İstemci Kitaplıkları

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

Uygulamanızın dilinde kitaplıklar mevcut değilse 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'lere gerek yoktur. Uygun deliveryAdmin rolüyle birlikte Uygulama Varsayılan Kimlik Bilgilerini kullanın.

Java

Java kitaplıkları google.maps.fleetengine.delivery.v1 altında yayınlanı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 Auth Kitaplığı'nı kullanabilirsiniz.

Fleet Engine'i kullanmaya başlama sayfasında, Fleet Engine API ile etkileşim için Java örneklerini inceleyebilirsiniz.

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 paketlenmiştir.

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ığının yükleme talimatlarını https://www.nuget.org/packages/Google.Maps.FleetEngine.Delivery.V1 adresinde bulabilirsiniz.

PHP

https://packagist.org/packages/google/maps-fleetengine-delivery adresine bakın.

Ruby

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