Di API yang saya kerjakan ada operasi penghapusan massal yang menerima array ID:
["1000", ..., "2000"]
Saya bebas untuk menerapkan operasi hapus seperti yang saya inginkan, jadi saya memutuskan untuk membuat semuanya transaksional: yaitu, jika satu ID tidak valid, seluruh permintaan gagal. Saya akan menyebutnya mode ketat .
try{
savepoint = conn.setSavepoint();
for(id : IDs)
if( !deleteItem(id) ){
conn.rollback(savepoint);
sendHttp400AndBeDoneWithIt();
return;
}
conn.commit();
}
Alternatif (diimplementasikan di tempat lain dalam rangkaian perangkat lunak kami) adalah melakukan apa yang dapat kami lakukan di backend, dan melaporkan kegagalan dalam sebuah array. Bagian dari perangkat lunak itu menangani permintaan yang lebih sedikit sehingga responsnya tidak berakhir menjadi array raksasa ... secara teori.
Bug baru-baru ini terjadi di server yang miskin sumber daya membuat saya melihat kode lagi, dan sekarang saya mempertanyakan keputusan awal saya - tetapi kali ini saya lebih termotivasi oleh kebutuhan bisnis daripada praktik terbaik. Jika, misalnya, saya gagal seluruh permintaan, pengguna harus mencoba lagi sedangkan jika sejumlah item dihapus, pengguna dapat menyelesaikan tindakan dan kemudian meminta administrator untuk melakukan sisanya (sementara saya bekerja memperbaiki bug !). Ini akan menjadi mode permisif .
Saya mencoba mencari online untuk beberapa panduan tentang masalah ini tetapi saya datang dengan tangan kosong. Jadi saya datang kepada Anda: Apa yang paling diharapkan dari operasi massal seperti ini? Haruskah saya bertahan dengan lebih ketat, atau haruskah saya lebih permisif?