אחרי שמגדירים את הפרויקט להצהרת התלויות בספריית הלקוח של Google APIs ל-Java, מבצעים את השלבים הבאים כדי לשלוח בקשה. בקטעי הקוד שבדף הזה נעשה שימוש בגרסה 3 של Cloud Resource Manager API.
שלב 1: אימות
יצירת מופע של com.google.auth.oauth2.GoogleCredentials. משתמשי Google Cloud יכולים להשתמש ב-GoogleCredentials.getApplicationDefault() כדי לקבל את Application Default Credentials.
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
מידע נוסף על אימות זמין במאמר בנושא Google Auth Library Java.
שלב 2: יצירת מופע של מחלקת השירות
לשירות Google יש גרסה אחת או יותר. מחלקת שירות מייצגת גרסה של שירות והיא מחלקת צאצא של AbstractGoogleJsonClient.
לדוגמה
com.google.api.services.cloudresourcemanager.v3.CloudResourceManager.
מחלקת ה-builder של מחלקת השירות מקבלת 3 פרמטרים:
-
com.google.api.client.http.HttpTransport.new com.google.api.client.http.javanet.NetHttpTransport()יוצר מופע שלו. -
com.google.api.client.json.JsonFactory.GsonFactory.getDefaultInstance()יוצר מופע שלו. -
com.google.api.client.http.HttpRequestInitializer. new HttpCredentialsAdapter(credentials)מחזירה מופע של המחלקה.
קוראים גם לשיטת setApplicationName() של ה-builder עם שם האפליקציה. הפעולה הזו מגדירה את כותרת UserAgent עם שם האפליקציה, והיא שימושית לפתרון בעיות באמצעות יומני רישום.
הקוד נראה כך:
HttpTransport transport = new NetHttpTransport();
JsonFactory jsonFactory = GsonFactory.getDefaultInstance();
CloudResourceManager.Builder resourceManagerBuilder =
new CloudResourceManager.Builder(
transport, jsonFactory, new HttpCredentialsAdapter(credentials))
.setApplicationName("Example Java App");
CloudResourceManager cloudResourceManager = resourceManagerBuilder.build();
שלב 3: יצירת אובייקט Resource
מחלקת משאבים מייצגת סוג של המשאב שמנוהל על ידי שירות. המחלקות מוגדרות כמחלקות פנימיות של מחלקת השירות. אפשר לגשת אליהם באמצעות השיטות בכיתת השירות.
לדוגמה, אפשר לקבל את המשאב Projects של המחלקה CloudResourceManager:
import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager.Projects;
...
Projects projects = cloudResourceManager.projects();
שלב 4: יוצרים אובייקט בקשה
הפעולות שמתבצעות על אובייקט המשאב מיוצגות כמחלקות בקשה. הפעולות הזמינות תלויות במחלקת המשאבים. לדוגמה, מחלקת משאבים שמספקת שיטות של create, get ו-delete מכילה מחלקות בקשות של Create, Get ו-Delete בהתאמה.
בדוגמה של Cloud Resource Manager, אפשר ליצור את אובייקט בקשת ה-Get על ידי קריאה ל-method projects.get:
Get get = projects.get("projects/your-project-id");
שלב 5: הפעלת הבקשה
לאובייקט בקשה יש את השיטה execute() שמריצה את הבקשה. הקריאה הזו מבצעת בקשת HTTP לשירות Google ומבטלת את הסריאליזציה של תגובת ה-JSON למחלקת מודל. לדוגמה, השיטה execute() של אובייקט הבקשה Get מחזירה אובייקט Project:
Project project = get.execute();
System.out.println("Project name: " + project.getDisplayName());
סיכום
בעזרת השלבים האלה, אפשר לשלוח בקשות באמצעות ספריית הלקוח של Google APIs ל-Java. קטע הקוד הבא משלב את כל השלבים באמצעות שירות Resource Manager.
package com.example;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
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();
HttpTransport transport = new NetHttpTransport();
JsonFactory 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());
}
}