Operation

Resource ini mewakili operasi yang berjalan lama yang merupakan hasil dari panggilan API jaringan.

Representasi JSON
{
  "name": string,
  "metadata": {
    "@type": string,
    field1: ...,
    ...
  },
  "done": boolean,

  // Union field result can be only one of the following:
  "error": {
    object (Status)
  },
  "response": {
    "@type": string,
    field1: ...,
    ...
  }
  // End of list of possible types for union field result.
}
Kolom
name

string

Nama server yang ditetapkan, yang hanya bersifat unik dalam layanan yang sama yang awalnya menampilkannya. Jika Anda menggunakan pemetaan HTTP default, name harus berupa nama resource yang diakhiri dengan operations/{unique_id}.

metadata

object

Metadata khusus layanan yang terkait dengan operasi. Biasanya berisi informasi kemajuan dan metadata umum, seperti membuat waktu. Beberapa layanan mungkin tidak menyediakan metadata semacam itu. Setiap metode yang menampilkan operasi yang berjalan lama harus mendokumentasikan tipe metadata, jika ada.

Objek yang berisi kolom tipe arbitrer. Kolom tambahan "@type" berisi URI yang mengidentifikasi jenis. Contoh: { "id": 1234, "@type": "types.example.com/standard/id" }.

done

boolean

Jika nilainya adalah false, berarti operasi masih berlangsung. Jika true, operasi selesai, dan error atau response tersedia.

Kolom union result. Hasil operasi, yang dapat berupa error atau response yang valid. Jika done == false, error atau response tidak ditetapkan. Jika done == true, hanya salah satu dari error atau response yang ditetapkan. result hanya dapat berupa salah satu dari berikut:
error

object (Status)

Hasil error operasi jika terjadi kegagalan atau pembatalan.

response

object

Respons normal dari operasi jika terjadi keberhasilan. Jika metode asli tidak menampilkan data saat berhasil, seperti Delete, responsnya adalah google.protobuf.Empty. Jika metode asli adalah Get/Create/Update standar, responsnya harus berupa resource. Untuk metode lain, respons harus memiliki jenis XxxResponse, dengan Xxx yang merupakan nama metode asli. Misalnya, jika nama metode asli adalah TakeSnapshot(), jenis respons yang disimpulkan adalah TakeSnapshotResponse.

Objek yang berisi kolom tipe arbitrer. Kolom tambahan "@type" berisi URI yang mengidentifikasi jenis. Contoh: { "id": 1234, "@type": "types.example.com/standard/id" }.

Status

Jenis Status menjelaskan model error logis yang cocok untuk berbagai lingkungan pemrograman, termasuk REST API dan RPC API. Ini digunakan oleh gRPC. Model error dirancang untuk menjadi:

  • Mudah untuk digunakan dan dimengerti oleh sebagian besar pengguna
  • Cukup fleksibel untuk memenuhi kebutuhan tak terduga

Ringkasan

Pesan Status berisi tiga bagian data: kode error, pesan error, dan detail error. Kode error harus berupa nilai enum dari google.rpc.Code, tetapi kode error dapat menerima kode error tambahan jika diperlukan. Pesan error harus berupa pesan berbahasa Inggris yang membantu developer memahami dan mengatasi error. Jika perlu terjemahan pesan error yang ditampilkan ke pengguna, letakkan pesan yang diterjemahkan dalam detail error atau terjemahkan di klien. Detail error opsional mungkin berisi informasi arbitrer tentang error tersebut. Ada satu set jenis detail error yang telah ditentukan dalam paket google.rpc yang dapat digunakan untuk kondisi error umum.

Pemetaan bahasa

Pesan Status merupakan representasi logis dari model error, tetapi pesan tersebut belum tentu merupakan format wire yang sebenarnya. Saat pesan Status ditampilkan di library klien dan protokol wire yang berbeda, maka pesan tersebut dapat dipetakan secara berbeda. Sebagai contoh, kemungkinan akan dipetakan ke beberapa pengecualian di Java, tetapi lebih mungkin dipetakan ke beberapa kode error dalam C.

Penggunaan lain

Model error dan pesan Status dapat digunakan dalam berbagai lingkungan, baik dengan atau tanpa API, untuk memberikan pengalaman developer yang konsisten di berbagai lingkungan.

Contoh penggunaan model error ini termasuk:

  • Error sebagian. Jika suatu layanan perlu menampilkan error sebagian kepada klien, layanan tersebut dapat menyematkan Status dalam respons normal untuk menunjukkan error sebagian.

  • Error alur kerja. Alur kerja biasanya memiliki beberapa langkah. Setiap langkah mungkin memiliki pesan Status untuk pelaporan error.

  • Operasi batch Jika klien menggunakan permintaan batch dan respons batch, pesan Status harus digunakan secara langsung di dalam respons batch, satu untuk masing-masing sub-respons error.

  • Operasi asinkron Jika panggilan API menyematkan hasil operasi asinkron dalam responsnya, status operasi tersebut harus diwakili secara langsung menggunakan pesan Status.

  • Logging. Jika beberapa error API disimpan dalam log, Status pesan dapat digunakan secara langsung setelah penghapusan yang diperlukan untuk alasan keamanan/privasi.

Representasi JSON
{
  "code": number,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Kolom
code

number

Kode status, harus berupa nilai enum dari google.rpc.Code.

message

string

Pesan error yang ditampilkan ke developer dan seharusnya dalam bahasa Inggris. Setiap pesan error yang ditampilkan kepada pengguna harus dilokalkan dan dikirim di kolom google.rpc.Status.details, atau dilokalkan oleh klien.

details[]

object

Daftar pesan yang membawa detail error. Ada seperangkat jenis pesan umum untuk digunakan API.

Objek yang berisi kolom tipe arbitrer. Kolom tambahan "@type" berisi URI yang mengidentifikasi jenis. Contoh: { "id": 1234, "@type": "types.example.com/standard/id" }.