В API, над яким я працюю, є операція масового видалення, яка приймає масив ідентифікаторів:
["1000", ..., "2000"]
Я міг вільно реалізувати операцію видалення так, як вважав за потрібне, тому вирішив зробити всю справу трансакційною: тобто, якщо один ідентифікатор недійсний, весь запит виходить з ладу. Я назву це суворим режимом.
try{
savepoint = conn.setSavepoint();
for(id : IDs)
if( !deleteItem(id) ){
conn.rollback(savepoint);
sendHttp400AndBeDoneWithIt();
return;
}
conn.commit();
}
Альтернатива (впроваджена в іншому місці нашого програмного пакету) полягає в тому, щоб зробити все, що ми можемо, в сервісному періоді та повідомити про помилки в масиві. Ця частина програмного забезпечення стосується меншої кількості запитів, тому відповідь не закінчується гігантським масивом ... теоретично.
Нещодавня помилка, що виникає на сервері з обмеженими ресурсами, змусила мене знову переглянути код, і тепер я ставлю під сумнів своє первісне рішення - але цього разу мене більше мотивують потреби бізнесу, а не найкраща практика. Якщо, наприклад, я не проважую весь запит, користувачеві доведеться спробувати ще раз, тоді як якщо кількість елементів буде видалено, користувач може закінчити дію, а потім попросити адміністратора зробити все інше (поки я працюю над виправленням помилки !). Це був би дозвільний режим.
Я спробував шукати в Інтернеті деякі поради з цього питання, але я прийшов з порожніми руками. Тож я приходжу до вас: Чого найбільше очікують масові операції такого характеру? Чи варто дотримуватися суворішого, чи мені бути більш дозволеною?