Tombol berputar, tab menampilkan galat, dan formulir yang Anda isi sepuluh menit sudah hilang. Yang tidak Anda ketahui adalah apakah penulisan itu sampai sebelum koneksi mati. Memperlakukan ketidakpastian itu sebagai kegagalan adalah cara komentar ganda, pesanan ganda, dan tiket dukungan berulang tercipta.

Pulihkan dalam urutan tetap: simpan teksnya, temukan hasilnya, dan baru setelah itu putuskan apakah pengiriman kedua diizinkan.

Mulai dari teks dan stempel waktu

Salin isinya dari halaman sebelum Anda menyentuh apa pun, termasuk draf yang masih dipegang peramban di kolom. Catat waktunya, halaman tempat Anda berada, dan tindakan yang Anda lakukan, karena ketiga rincian itulah yang memungkinkan sisa penyelidikan. Jika tab masih terbuka, biarkan terbuka sampai Anda membaca entri jaringan. Menyimpan teks tidak memakan biaya, dan kehilangannya memakan seluruh tugas.

Lalu pisahkan dua bentuk kegagalan yang benar-benar dapat Anda amati. Koneksi yang putus di tengah permintaan dan server yang menjawab dengan galat terlihat berbeda di panel jaringan, dan hanya yang kedua memberi tahu sesuatu tentang keputusan aplikasi.

Cari hasilnya di tampilan aplikasi itu sendiri

Muat ulang tampilan baca yang akan menunjukkan hasilnya: daftar komentar, riwayat pesanan, antrean tiket, atau catatan yang sedang Anda sunting. Cocokkan berdasarkan akun, tujuan, waktu, dan isi, bukan berdasarkan entri terbaru, karena orang lain mungkin menulis setelah Anda. Untuk tugas latar belakang, cari referensi yang sudah ada dan statusnya, bukan membuat operasi baru sebagai uji konektivitas.

Jika hasilnya ada, Anda selesai dan galat itu milik jalur balasan, bukan jalur penulisan. Jika tidak ada, pertahankan kemungkinan bahwa aplikasi belum menyimpannya: tugas dalam antrean, tampilan baca yang tertunda, atau replika yang tertinggal dapat menyembunyikan penulisan yang berhasil untuk sementara.

Beri pandangan kedua yang pasti sebelum menarik kesimpulan, dan catat waktu kedua pemeriksaan. Dua pemeriksaan berjarak dua puluh detik jauh lebih lemah sebagai bukti daripada dua pemeriksaan berjarak sepuluh menit.

Putuskan apakah pengiriman kedua aman

Jawabannya bergantung pada operasinya, bukan pada kesabaran Anda. HTTP memisahkan metode yang dapat diulang dengan efek yang dimaksudkan sama dari yang tidak dapat, dan menyarankan agar tidak mencoba ulang otomatis jenis kedua kecuali semantiknya diketahui mengizinkan. Membuat komentar, memasang pesanan, dan mengirim pembayaran biasanya masuk kelompok kedua, karena itu klik kedua yang tampak berhasil tidak mengatakan apa pun tentang yang pertama.

Jika Anda memelihara klien, gunakan mekanisme coba ulang atau idempotensi yang didokumentasikan API, dan kaitkan pada operasi logis yang sama alih-alih membuat kunci baru untuk setiap percobaan. Pengenal permintaan yang dipakai untuk penelusuran bukan kunci penekan duplikat kecuali server memperlakukannya sebagai kunci.

curl -i -X POST https://api.example.net/v1/orders \
  -H "Idempotency-Key: 6f1c2a94-3b7e-4a10-9c22-5d0e8f7b1a63" \
  -H "Content-Type: application/json" \
  --data @order.json

Kunci itu hanya membantu jika layanan menyimpannya pada operasi dan mengembalikan hasil asli saat diulang. Uji perilaku itu di titik akhir staging sebelum Anda mengandalkannya di produksi.

Kumpulkan bukti sebelum menekan apa pun lagi

Simpan entri jaringan, bukan tangkapan layar galat. Metode permintaan, URL, balasan atau batas waktu, dan waktu kejadiannya adalah yang dapat dikorelasikan administrator dengan catatan aplikasi. Ekspor atau salin entri sebagai perintah hanya jika Anda kemudian menghapus cookie, header otorisasi, dan isi pribadi apa pun dari salinannya. Biarkan sesi Anda sendiri utuh, dan jangan pernah memutar ulang permintaan tertangkap yang membawa kredensial sebagai jalan pintas.

Tanyakan satu pertanyaan spesifik kepada pemilik layanan: apakah operasi dengan isi ini pada waktu ini berhasil, dan adakah referensinya? Pertanyaan itu punya jawaban, sedangkan "apakah situsnya rusak" tidak.

Inti latihan ini adalah memastikan tindakan itu terjadi tepat sekali. Pesan galat yang bisa Anda tutup tidak sama dengan catatan yang bisa Anda percaya, dan yang kedua itulah yang Anda butuhkan sebelum mengirim apa pun lagi.

Artikel terkait