API 请求

设置好项目以为 Java 版 Google API 客户端库声明依赖项后,请按以下步骤发出请求。本页面中的代码段使用 v3 的 Cloud Resource Manager API。

第 1 步:身份验证

实例化 com.google.auth.oauth2.GoogleCredentials 实例。对于 Google Cloud 用户,您可以使用 GoogleCredentials.getApplicationDefault() 获取应用默认凭据

GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();

如需详细了解身份验证,请参阅 Google Auth 库 Java

第 2 步:实例化服务类

一项 Google 服务有一个或多个版本。服务类表示服务的一个版本,是 AbstractGoogleJsonClient 的子类。例如 com.google.api.services.cloudresourcemanager.v3.CloudResourceManager

该服务类的 builder 类接受 3 个参数:

此外,还要使用应用名称调用构建器的 setApplicationName() 方法。这会使用应用名称设置 UserAgent 标头,并且有助于排查日志问题。

代码如下所示:

NetHttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
CloudResourceManager.Builder resourceManagerBuilder =
    new CloudResourceManager.Builder(
        transport, jsonFactory, new HttpCredentialsAdapter(credentials))
        .setApplicationName("Example Java App");
CloudResourceManager cloudResourceManager = resourceManagerBuilder.build();

第 3 步:创建资源对象

资源类表示服务所管理的一种资源。 此类被定义为服务类的内部类。您可以使用服务类中的方法访问它们。

例如,您可以获取 CloudResourceManager 类的“Projects”资源:

import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager.Projects;

...

Projects projects = cloudResourceManager.projects();

第 4 步:发出请求对象

对资源对象执行的操作表示为请求类。可用的操作取决于资源类。例如,某个提供“create”“get”和“delete”方法的资源类分别包含“Create”“Get”和“Delete”请求类。

以 Cloud Resource Manager 为例,您可以通过调用 projects.get 方法来发出 Get 请求对象:

Get get = projects.get("projects/your-project-id");

第 5 步:执行请求

请求对象具有用于运行请求的 execute() 方法。此调用会执行对 Google 服务的 HTTP 请求,并将 JSON 响应反序列化为模型类。例如,Get 请求对象的 execute() 方法会返回一个 Project 对象:

Project project = get.execute();
System.out.println("Project name: " + project.getDisplayName());

摘要

通过这些步骤,您可以使用 Java 版 Google API 客户端库发出请求。以下代码段使用 Resource Manager 服务合并所有步骤。

package com.example;

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager;
import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager.Projects;
import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager.Projects.Get;
import com.google.api.services.cloudresourcemanager.v3.model.Project;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;

public class ResourceManagerSample {
  public static void main(String[] arguments) throws Exception {
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();

    NetHttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
    GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
    CloudResourceManager.Builder resourceManagerBuilder =
        new CloudResourceManager.Builder(
            transport, jsonFactory, new HttpCredentialsAdapter(credentials))
            .setApplicationName("Example Java App");
    CloudResourceManager cloudResourceManager = resourceManagerBuilder.build();

    Projects projects = cloudResourceManager.projects();

    Get get = projects.get("projects/your-project-id");

    Project project = get.execute();
    System.out.println("Project display name: " + project.getDisplayName());
  }
}