In der API, an der ich arbeite, gibt es einen Massenlöschvorgang, der ein Array von IDs akzeptiert:
["1000", ..., "2000"]
Es stand mir frei, den Löschvorgang nach eigenem Ermessen zu implementieren, daher habe ich beschlossen, die gesamte Transaktion durchzuführen: Wenn eine einzelne ID ungültig ist, schlägt die gesamte Anforderung fehl. Ich werde dies den strengen Modus nennen.
try{
savepoint = conn.setSavepoint();
for(id : IDs)
if( !deleteItem(id) ){
conn.rollback(savepoint);
sendHttp400AndBeDoneWithIt();
return;
}
conn.commit();
}
Die Alternative (an anderer Stelle in unserer Software-Suite implementiert) besteht darin, im Backend das zu tun, was wir können, und Fehler in einem Array zu melden. Dieser Teil der Software behandelt weniger Anforderungen, sodass die Antwort nicht zu einem gigantischen Array wird ... theoretisch.
Ein kürzlich aufgetretener Fehler auf einem ressourcenarmen Server hat mich veranlasst, den Code erneut zu überprüfen, und jetzt stelle ich meine ursprüngliche Entscheidung in Frage - diesmal bin ich jedoch eher von geschäftlichen Anforderungen als von Best Practices motiviert. Wenn beispielsweise die gesamte Anforderung fehlschlägt, muss der Benutzer es erneut versuchen. Wenn jedoch mehrere Elemente gelöscht werden, kann der Benutzer die Aktion beenden und dann einen Administrator bitten, den Rest zu erledigen (während ich an der Behebung des Fehlers arbeite !). Dies wäre der zulässige Modus.
Ich habe versucht, online nach einer Anleitung zu suchen, bin aber mit leeren Händen aufgetaucht. Also komme ich zu Ihnen: Was wird von Massenoperationen dieser Art am meisten erwartet? Sollte ich mich strikt an mehr halten oder sollte ich freizügiger sein?