בקשות API

אחרי שמגדירים את הפרויקט להצהרה על יחסי התלות של ספריית הלקוח של 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 פרמטרים:

קוראים גם ל-method setApplicationName() של ה-builder עם שם האפליקציה. האפשרות הזו מגדירה את הכותרת של 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: יצירת אובייקט של משאב

מחלקת משאב מייצגת סוג של המשאב שמנוהל על ידי שירות. המחלקה מוגדרת כמחלקה פנימית של מחלקת השירות. אפשר לגשת אליהן באמצעות השיטות במחלקת השירות.

לדוגמה, תוכלו לקבל את המשאב 'Projects' במחלקה CloudResourceManager:

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

...

Projects projects = cloudResourceManager.projects();

שלב 4: צרו אובייקט בקשה

הפעולות על אובייקט המשאב מיוצגות כמחלקות בקשה. הפעולות הזמינות תלויות בסוג המשאב. לדוגמה, סיווג משאבים שמספק שיטות 'יצירה', 'קבל' ו'מחיקה' מכיל את מחלקות הבקשות: 'יצירה', 'קבל' ו'מחיקה', בהתאמה.

בדוגמה של Cloud Resource Manager, אפשר ליצור את האובייקט Get request על ידי קריאה ל-method projects.get:

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

שלב 5: ביצוע הבקשה

אובייקט בקשה כולל את השיטה execute() שמריצה את הבקשה. הקריאה הזו מפעילה בקשת HTTP לשירות Google ומבצעת פעולת deserials של תגובת ה-JSON למחלקה של מודל. לדוגמה, השיטה execute() של אובייקט בקשת Get מחזירה אובייקט של פרויקט:

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

סיכום

בעזרת השלבים האלה תוכלו לשלוח בקשות באמצעות ספריית הלקוח של Google APIs עבור Java. זהו קטע הקוד שמשלב את כל השלבים באמצעות השירות 'מנהל המשאבים'.

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());
  }
}