Mengelola mask update

Saat memperbarui resource (permintaan PATCH), Google Cloud API sering menggunakan Mask Update (com.google.protobuf.FieldMask). Hal ini memberi tahu server dengan tepat kolom mana yang ingin Anda perbarui, sehingga mencegah penimpaan yang tidak disengaja pada kolom lain.

Jika Anda tidak memberikan mask, beberapa API akan memperbarui semua kolom, dan mereset kolom yang tidak ada ke nilai default.

Membangun FieldMask

import com.google.cloud.secretmanager.v1.Secret;
import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;
import com.google.cloud.secretmanager.v1.UpdateSecretRequest;
import com.google.protobuf.FieldMask;

try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) {
    // Prepare the resource with NEW values
    Secret secret = Secret.newBuilder()
        .setName("projects/my-project/secrets/my-secret")
        .putLabels("env", "production") // We only want to update this field
        .build();

    // Create the FieldMask
    // Paths MUST match the protobuf field names (snake_case)
    FieldMask updateMask = FieldMask.newBuilder()
        .addPaths("labels")
        .build();

    // Prepare the Request object
    UpdateSecretRequest request = UpdateSecretRequest.newBuilder()
        .setSecret(secret)
        .setUpdateMask(updateMask)
        .build();

    // Call the API
    client.updateSecret(request);
}