Trong API tôi đang làm việc có một thao tác xóa hàng loạt chấp nhận một mảng ID:
["1000", ..., "2000"]
Tôi được tự do thực hiện thao tác xóa khi tôi thấy phù hợp, vì vậy tôi quyết định thực hiện toàn bộ giao dịch: đó là, nếu một ID duy nhất không hợp lệ, toàn bộ yêu cầu không thành công. Tôi sẽ gọi đây là chế độ nghiêm ngặt .
try{
savepoint = conn.setSavepoint();
for(id : IDs)
if( !deleteItem(id) ){
conn.rollback(savepoint);
sendHttp400AndBeDoneWithIt();
return;
}
conn.commit();
}
Cách thay thế (được triển khai ở nơi khác trong bộ phần mềm của chúng tôi) là làm những gì chúng ta có thể trong phần phụ trợ và báo cáo các lỗi trong một mảng. Đó là một phần của phần mềm xử lý ít yêu cầu hơn nên phản hồi cuối cùng không phải là một mảng khổng lồ ... trên lý thuyết.
Một lỗi gần đây xảy ra trong một máy chủ nghèo tài nguyên khiến tôi phải xem lại mã và bây giờ tôi đang đặt câu hỏi cho quyết định ban đầu của mình - nhưng lần này tôi được thúc đẩy nhiều hơn bởi nhu cầu kinh doanh hơn là các thực tiễn tốt nhất. Ví dụ, nếu tôi thất bại toàn bộ yêu cầu, người dùng sẽ phải thử lại trong khi nếu một số mục bị xóa, người dùng có thể hoàn thành hành động và sau đó yêu cầu quản trị viên thực hiện phần còn lại (trong khi tôi khắc phục lỗi !). Đây sẽ là chế độ cho phép .
Tôi đã cố gắng tìm kiếm trực tuyến một số hướng dẫn về vấn đề này nhưng tôi đã ra về tay không. Vì vậy, tôi đến với bạn: Điều gì được mong đợi nhất bởi các hoạt động hàng loạt có tính chất này? Tôi nên gắn bó với nghiêm ngặt hơn, hay tôi nên dễ dãi hơn?