為確保高品質並與其他 Cloud 程式庫保持一致,Storage 移轉服務的說明文件現在使用 Cloud 用戶端程式庫,而非 Google API 用戶端程式庫。如要進一步瞭解這兩個選項,請參閱「用戶端程式庫說明」。
Google API 用戶端程式庫會持續更新,但說明文件中不再提及。
本指南涵蓋使用 Storage Transfer Service 時的主要差異,並提供將用戶端遷移至 Cloud Client Library 時的更新操作說明。
Java
更新依附元件
如要改用新版程式庫,請將 google-api-services-storagetransfer
的依附元件替換為 google-cloud-storage-transfer
。
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-storage-transfer</artifactId> <version>0.2.3</version> </dependency>
如果您使用無 BoM 的 Gradle,請在依附元件中加入以下指令:
implementation 'com.google.cloud:google-cloud-storage-transfer:0.2.3'
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>24.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage-transfer</artifactId>
</dependency>
在大多數情況下,程式碼可以輕鬆從 API 用戶端程式庫轉換為 Cloud 用戶端程式庫。以下是這兩種 Java 用戶端的主要差異
用戶端例項化
Cloud Client Library 會在幕後處理用戶端例項,大幅減少與用戶端例項相關的樣板。
API 用戶端程式庫
GoogleCredentials credential = GoogleCredentials.getApplicationDefault();
if (credential.createScopedRequired()) {
credential = credential.createScoped(StoragetransferScopes.all());
}
Storagetransfer storageTransfer = new Storagetransfer.Builder(Utils.getDefaultTransport(),
Utils.getDefaultJsonFactory(), new HttpCredentialsAdapter(credential))
.build();
Cloud 用戶端程式庫
StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();
模型類別的建構工具
Cloud 用戶端程式庫中的模型類別會使用建構函式,而非建構工具。
API 用戶端程式庫
TransferJob transferJob =
new TransferJob()
.setStatus("ENABLED");
Cloud 用戶端程式庫
TransferJob transferJob =
TransferJob.newBuilder()
.setStatus(Status.ENABLED)
.build();
列出作業會傳回可疊代項目
Cloud 用戶端程式庫中的清單作業會傳回簡單的可疊代項目,而非 API 用戶端程式庫中的分頁結果。
API 用戶端程式庫
public class StoragetransferExample {
public static void main(String args[]) throws IOException, GeneralSecurityException {
Storagetransfer storagetransferService = createStoragetransferService();
Storagetransfer.TransferJobs.List request = storagetransferService.transferJobs().list();
ListTransferJobsResponse response;
do {
response = request.execute();
if (response.getTransferJobs() == null) {
continue;
}
for (TransferJob transferJob : response.getTransferJobs()) {
System.out.println(transferJob);
}
request.setPageToken(response.getNextPageToken());
} while (response.getNextPageToken() != null);
}
public static Storagetransfer createStoragetransferService()
throws IOException, GeneralSecurityException {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = GoogleCredential.getApplicationDefault();
}
return new Storagetransfer.Builder(httpTransport, jsonFactory, credential)
.build();
}
}
Cloud 用戶端程式庫
public class StoragetransferExample {
public static void main(String args[]) throws Exception {
StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();
ListTransferJobsRequest request = ListTransferJobsRequest.newBuilder().build();
for (TransferJob job : client.listTransferJobs(request).iterateAll()) {
System.out.println(job);
}
}
}
比較範例
我們在此提供舊版 API 用戶端程式庫的範例,並與使用 Cloud 用戶端程式庫的對等範例進行比較。如果您先前使用過這些範例,可以透過這項比較瞭解如何將程式碼移至新的 Cloud 用戶端程式庫。