Bagikan melalui


Kontrol Konkurensi

Catatan

API Portal Mitra Cloud terintegrasi dengan dan akan terus bekerja di Pusat Mitra. Transisi memperkenalkan perubahan kecil. Tinjau perubahan yang tercantum di Referensi API Portal Mitra Cloud untuk memastikan kode Anda terus berfungsi setelah transisi ke Pusat Mitra. API CPP hanya boleh digunakan untuk produk yang sudah terintegrasi sebelum transisi ke Pusat Mitra. Produk baru harus menggunakan API pengiriman Pusat Mitra.

Setiap panggilan ke API penerbitan Cloud Partner Portal harus secara eksplisit menentukan strategi kontrol konkurensi mana yang akan digunakan. Kegagalan untuk menyediakan header If-Match akan menghasilkan respons kesalahan HTTP 400. Kami menawarkan dua strategi untuk kontrol konkurensi.

  • Optimis - Klien yang melakukan pembaruan memverifikasi apakah data telah berubah sejak terakhir kali membaca data.
  • Yang terakhir menang - Klien secara langsung memperbarui data, terlepas dari apakah aplikasi lain telah memodifikasinya sejak waktu baca terakhir.

Alur kerja konkurensi optimis

Sebaiknya gunakan strategi konkurensi optimis, dengan alur kerja berikut, untuk menjamin bahwa tidak ada pengeditan tak terduga yang dilakukan pada sumber daya Anda.

  1. Mengambil entitas menggunakan API. Respons mencakup nilai ETag yang mengidentifikasi versi entitas yang saat ini disimpan (pada saat respons).
  2. Pada saat pembaruan, sertakan nilai ETag yang sama ini di header permintaan If-Match wajib.
  3. API membandingkan nilai ETag yang diterima dalam permintaan dengan nilai ETag entitas saat ini dalam transaksi atom.
    • Jika nilai ETag berbeda, API akan mengembalikan 412 Precondition Failed respons HTTP. Kesalahan ini menunjukkan bahwa salah satu proses lain telah memperbarui entitas sejak klien terakhir mengambilnya, atau bahwa nilai ETag yang ditentukan dalam permintaan tidak benar.
    • Jika nilai ETag sama, atau header If-Match berisi karakter tanda bintang wildcard (*), API melakukan operasi yang diminta. Operasi API juga memperbarui nilai ETag yang tersimpan dari entitas.

Catatan

Menentukan karakter wildcard (*) dalam hasil header If-Match di API menggunakan strategi konkurensi Last-one-wins. Dalam hal ini, perbandingan ETag tidak terjadi dan sumber daya diperbarui tanpa pemeriksaan apa pun.