Я согласен с @Daniel, что правильный ответ - HTTP 500 (ошибка сервера). Веб-приложение должно быть написано для отката транзакции при возникновении ошибки, а не для того, чтобы все оставалось незавершенным.
Одна вещь, которую вы можете использовать в своем веб-приложении, это «идемпотентность». Это свойство функции (или операции), которую вы можете повторять столько раз, сколько хотите, с одним и тем же результатом. Например, если чтение не удалось, клиент может просто повторить его, пока оно не будет успешно выполнено. Если удаление кажется неудачным, клиент может снова повторить попытку, и сервер обработает запрос как действительный, независимо от того, удален ли уже удаленный ресурс. И если обновление кажется неудачным, клиент может повторить это, пока не получит успешный возврат с сервера. Подход REST к архитектуре веб-сервисов активно использует идемпотентность, чтобы сделать операции устойчивыми к ошибкам.