Lewati ke konten utama
Didit Raih $7,5 Juta untuk Membangun Infrastruktur Identitas dan Fraud
Didit
Kembali ke blog
Blog · 7 Maret 2026

Panggilan API Didit yang Tangguh: Percobaan Ulang & Idempoten di Rust (ID)

Membangun layanan mikro yang tangguh memerlukan penanganan panggilan API eksternal yang cermat, terutama ke platform verifikasi identitas penting seperti Didit.

Oleh DiditDiperbarui
rust-didit-api-retries-idempotency.png

Percobaan Ulang StrategisTerapkan backoff eksponensial dan jitter untuk kesalahan sementara jaringan, mencegah API kewalahan dan memastikan stabilitas sistem. Pendekatan ini sangat penting untuk komunikasi yang andal dengan layanan eksternal seperti Didit.

Idempoten Berdasarkan DesainDesain panggilan API Anda agar idempoten, yang berarti beberapa permintaan identik memiliki efek yang sama dengan satu permintaan. Ini sangat penting untuk operasi kritis, mencegah pemrosesan duplikat dan menjaga integritas data, terutama saat berintegrasi dengan alur kerja verifikasi identitas Didit.

Manfaatkan Desain API DiditAPI Didit dibangun untuk pengembang, menawarkan kode status yang jelas dan perilaku yang dapat diprediksi yang menyederhanakan implementasi strategi percobaan ulang dan idempoten yang tangguh dalam layanan mikro Rust Anda.

Keunggulan Didit yang Mengutamakan PengembangDidit menyediakan platform yang ramah pengembang dengan dokumentasi yang jelas, API yang konsisten, dan registrasi terprogram, memudahkan integrasi dan membangun sistem tangguh yang menangani percobaan ulang dan idempoten secara efektif, memastikan verifikasi identitas yang andal.

Pentingnya Integrasi API yang Tangguh

Dalam dunia layanan mikro, sistem terdistribusi terus-menerus berkomunikasi, seringkali mengandalkan API eksternal untuk fungsionalitas krusial seperti verifikasi identitas. Saat mengintegrasikan layanan penting seperti Didit, yang menangani Verifikasi ID, Deteksi Kehadiran Pasif & Aktif, atau Penyaringan & Pemantauan AML, memastikan ketahanan panggilan API ini sangat penting. Gangguan jaringan, ketidaktersediaan layanan sementara, atau beban server yang tidak terduga semuanya dapat menyebabkan kegagalan permintaan. Tanpa mekanisme percobaan ulang yang tepat dan operasi idempoten, kegagalan ini dapat mengakibatkan inkonsistensi data, penurunan pengalaman pengguna, dan masalah operasional. Ini terutama berlaku pada layanan mikro Rust, di mana kinerja dan keandalan menjadi pertimbangan utama.

Platform Didit dirancang dengan filosofi yang mengutamakan pengembang, menawarkan respons API yang jelas dan titik akhir yang stabil yang memfasilitasi implementasi praktik terbaik ini. Memahami cara menangani kesalahan sementara dengan baik dan memastikan bahwa operasi berulang tidak menyebabkan efek samping yang tidak diinginkan adalah fundamental untuk membangun aplikasi tangguh yang memanfaatkan kemampuan verifikasi identitas Didit yang kuat.

Menerapkan Strategi Percobaan Ulang yang Tangguh di Rust

Percobaan ulang sangat penting untuk menangani kesalahan sementara – yaitu kesalahan yang bersifat sementara dan kemungkinan berhasil pada percobaan berikutnya. Namun, hanya mencoba ulang segera dapat memperburuk masalah, terutama selama pemadaman layanan. Kuncinya adalah menerapkan strategi backoff eksponensial dengan jitter.

Backoff Eksponensial dengan Jitter

Backoff eksponensial berarti meningkatkan penundaan antara percobaan ulang secara eksponensial. Jitter memperkenalkan penundaan acak kecil dalam jendela tersebut, mencegah semua klien yang mencoba ulang memukul API secara bersamaan saat pulih, yang dapat membuatnya kewalahan lagi. Untuk Rust, Anda dapat menggunakan pustaka atau mengimplementasikan logika ini secara manual.

Pertimbangkan skenario di mana layanan mikro Anda perlu membuat sesi verifikasi menggunakan API Didit. Mungkin terjadi batas waktu jaringan. Alih-alih langsung gagal, layanan Anda harus mencoba ulang dengan penundaan yang meningkat.

Implementasi dasar mungkin terlihat seperti ini:


use tokio::time::{sleep, Duration};

async fn call_didit_api_with_retry<F, Fut, T>(mut api_call: F) -> Result<T, String>
where
    F: FnMut() -> Fut,
    Fut: std::future::Future<Output = Result<T, String>>,
{
    let mut retries = 0;
    let max_retries = 5;
    let mut base_delay = Duration::from_secs(1);

    loop {
        match api_call().await {
            Ok(response) => return Ok(response),
            Err(e) => {
                if retries >= max_retries {
                    return Err(format!("API call failed after {} retries: {}", max_retries, e));
                }
                retries += 1;
                let delay = base_delay * (1 << retries) + Duration::from_millis(rand::random::<u64>() % 1000);
                eprintln!("API call failed, retrying in {:?}. Error: {}", delay, e);
                sleep(delay).await;
            }
        }
    }
}

// Example usage for creating a Didit session
async fn create_didit_session() -> Result<String, String> {
    // This would be your actual HTTP client call to Didit
    // For demonstration, we simulate a transient error
    static mut CALL_COUNT: u8 = 0;
    unsafe { CALL_COUNT += 1; }

    if unsafe { CALL_COUNT <= 2 } {
        Err("Simulated network error".to_string())
    } else {
        Ok("session_id_123".to_string())
    }
}

#[tokio::main]
async fn main() {
    match call_didit_api_with_retry(create_didit_session).await {
        Ok(session_id) => println!("Successfully created session: {}", session_id),
        Err(e) => eprintln!("Failed to create session: {}", e),
    }
}

Contoh ini menunjukkan cara membungkus panggilan API dengan logika percobaan ulang. Untuk produksi, pertimbangkan untuk menggunakan pustaka percobaan ulang Rust khusus yang menangani fitur yang lebih canggih seperti strategi backoff yang dapat dikonfigurasi, berbagai jenis kesalahan, dan pembuatan jitter yang lebih kuat. API Didit menyediakan kode status HTTP yang jelas (misalnya, 5xx untuk kesalahan server, 429 untuk pembatasan laju) yang dapat digunakan untuk menentukan apakah permintaan dapat dicoba ulang atau apakah itu menunjukkan kesalahan permanen yang memerlukan penanganan yang berbeda.

Memastikan Idempoten untuk Panggilan API Didit

Idempoten berarti bahwa suatu operasi dapat diterapkan beberapa kali tanpa mengubah hasil di luar aplikasi awal. Ini sangat penting untuk mencegah efek samping yang tidak diinginkan saat percobaan ulang terjadi. Misalnya, jika Anda melakukan pembayaran atau membuat sumber daya unik, mencoba ulang permintaan yang tidak idempoten dapat menyebabkan pembayaran duplikat atau pembuatan sumber daya.

API Didit biasanya menangani idempoten secara implisit untuk banyak operasi, terutama yang membuat sesi baru atau memperbarui sumber daya yang ada. Misalnya, membuat sesi verifikasi baru melalui POST /v3/session/ akan selalu mengembalikan ID sesi yang unik. Jika layanan Anda mencoba ulang pembuatan sesi yang gagal, Didit akan memperlakukannya sebagai upaya baru, yang umumnya diinginkan. Namun, untuk operasi yang mungkin memiliki efek samping eksternal atau pembuatan sumber daya yang harus benar-benar unik, Anda harus memastikan idempoten di sisi klien Anda.

Strategi untuk Idempoten Sisi Klien:

  1. ID Permintaan Unik (Kunci Idempoten): Untuk API yang mendukungnya, kirim ID unik yang dihasilkan klien dengan setiap permintaan. Server kemudian menggunakan ID ini untuk mendeteksi dan membuang permintaan duplikat dalam jangka waktu tertentu. Meskipun pembuatan sesi inti Didit tidak secara eksplisit memerlukan kunci idempoten di header, sifat dasar pembuatan sesi baru dengan ID unik memiliki tujuan yang serupa. Saat Anda membuat sesi, Anda mendapatkan UUID unik kembali, yang bertindak sebagai pengidentifikasi untuk proses verifikasi spesifik tersebut.

  2. Logika Periksa-Kemudian-Lakukan: Sebelum melakukan suatu tindakan, periksa apakah tindakan tersebut sudah dilakukan. Misalnya, sebelum membuat pengguna baru di sistem Anda setelah verifikasi Didit yang berhasil, periksa apakah pengguna dengan identitas terverifikasi tersebut sudah ada. Status Verifikasi Didit seperti Disetujui atau Ditolak bersifat definitif, memungkinkan Anda untuk dengan percaya diri memperbarui catatan internal Anda hanya setelah status akhir diterima.

  3. Manfaatkan ID Sesi Didit: Saat membuat sesi verifikasi, Didit mengembalikan ID sesi yang unik. Panggilan berikutnya yang terkait dengan sesi tersebut (misalnya, mengambil keputusannya menggunakan GET /v3/session/{id}/decision/) secara inheren idempoten karena Anda selalu menanyakan sumber daya yang sama. Ini adalah fitur yang kuat untuk mengelola siklus hidup verifikasi.

Menangani Pembatasan Laju dan Throttling API

Didit, seperti API tangguh lainnya, mengimplementasikan pembatasan laju untuk memastikan penggunaan yang adil dan stabilitas sistem. Melebihi batas ini akan menghasilkan respons HTTP 429 Too Many Requests. Strategi percobaan ulang Anda harus secara khusus memperhitungkan hal ini. Didit menyediakan header X-RateLimit-Limit, X-RateLimit-Remaining, dan X-RateLimit-Reset dalam respons 429-nya, bersama dengan header Retry-After.

Layanan mikro Rust Anda harus:

  • Parsing Header: Ekstrak nilai Retry-After dan tunggu setidaknya durasi tersebut sebelum mencoba ulang.
  • Prioritaskan Retry-After: Jika ada, selalu hormati header Retry-After di atas backoff eksponensial umum Anda.
  • Catat dan Peringatkan: Kesalahan 429 berulang mungkin menunjukkan perlunya menyesuaikan pola permintaan aplikasi Anda atau menghubungi dukungan Didit untuk peningkatan batas jika kasus penggunaan Anda membenarkannya.

Dokumentasi Didit secara eksplisit menyediakan batas global dan spesifik titik akhir, seperti 600 RPM untuk POST /v2/session/ dan 100 RPM untuk GET /v2/session/{id}/decision/. Mengetahui batas-batas ini membantu dalam merancang logika sisi klien Anda untuk tetap berada dalam batas.

Bagaimana Didit Membantu Membangun Sistem Identitas yang Tangguh

Arsitektur dan pendekatan Didit yang mengutamakan pengembang secara signifikan menyederhanakan integrasi pola percobaan ulang dan idempoten yang tangguh ke dalam layanan mikro Rust Anda. Berikut caranya:

  • Respons API yang Dapat Diprediksi: Didit menyediakan respons API yang konsisten dan terdokumentasi dengan baik, termasuk kode status HTTP standar, sehingga mudah untuk mengidentifikasi kesalahan yang dapat dicoba ulang (misalnya, kesalahan 5xx, 429) versus kesalahan yang tidak dapat dicoba ulang (misalnya, kesalahan klien 4xx yang biasanya memerlukan perubahan kode atau input pengguna).
  • Pengidentifikasi Sesi Unik: Setiap sesi verifikasi yang dimulai melalui produk Verifikasi ID atau Estimasi Usia Didit menerima pengidentifikasi unik. Idempoten intrinsik ini pada tingkat sumber daya menyederhanakan interaksi berikutnya, karena Anda selalu merujuk ke proses verifikasi tertentu yang tidak berubah.
  • Modular dan Dapat Dikombinasikan: Arsitektur modular Didit memungkinkan Anda untuk menggabungkan alur kerja verifikasi yang sesuai dengan kebutuhan Anda. Ini berarti Anda hanya memanggil API yang Anda butuhkan, mengurangi kompleksitas dan potensi titik kegagalan. Baik itu pemeriksaan Deteksi Kehadiran Pasif & Aktif atau Verifikasi Telepon & Email, setiap komponen terintegrasi dengan mulus.
  • Alat yang Mengutamakan Pengembang: Dengan kotak pasir instan, dokumentasi publik, dan API yang bersih, Didit memungkinkan pengembang untuk dengan cepat membangun dan menguji integrasi mereka, termasuk logika percobaan ulang dan idempoten. Kemampuan untuk mendaftar secara terprogram dan mendapatkan kredensial API hanya dalam dua panggilan API menyoroti komitmen Didit terhadap efisiensi pengembang.
  • KYC Inti Gratis: Didit menawarkan KYC Inti Gratis dan model bayar per pemeriksaan yang berhasil tanpa biaya pengaturan. Ini memungkinkan Anda untuk bereksperimen dan membangun integrasi yang tangguh tanpa biaya di muka, memastikan logika percobaan ulang Anda diuji secara menyeluruh di lingkungan nyata.
  • Keandalan Berbasis AI: Sebagai platform identitas berbasis AI, Didit dibangun untuk skala dan keandalan, menyediakan fondasi yang stabil bagi layanan mikro Anda untuk berintegrasi dengan percaya diri.

Dengan mengikuti praktik terbaik ini untuk percobaan ulang dan idempoten, dan dengan memanfaatkan API Didit yang tangguh dan ramah pengembang, layanan mikro Rust dapat mencapai tingkat keandalan dan konsistensi yang tinggi dalam proses verifikasi identitas mereka. Ini memastikan pengalaman yang mulus dan aman bagi pengguna Anda, bahkan di tengah fluktuasi jaringan atau gangguan layanan sementara.

Siap untuk Memulai?

Siap melihat Didit beraksi? Dapatkan demo gratis hari ini.

Mulai memverifikasi identitas secara gratis dengan tingkat gratis Didit.

Infrastruktur untuk identitas dan fraud.

Satu API untuk KYC, KYB, Transaction Monitoring, dan Wallet Screening. Integrasi dalam 5 menit.

Minta AI untuk merangkum halaman ini
Layanan Mikro Rust: Percobaan Ulang & Idempoten API Didit.