Мы разрабатываем HTTP REST API.
Этот API предоставляет определенный тип ресурсов через метод HTTP GET. Внутренне приложение извлекает данные из баз данных, выполняет некоторую обработку, а затем показывает результаты в ответе HTTP GET.
То, что мы хотим добавить к этой схеме, - это некоторая устойчивость к повреждению БД. Из-за формата данных, хранящихся в БД, у нас есть две возможности: либо данные могут быть декодированы после извлечения, либо нет. Мы стремимся пометить записи, которые нельзя декодировать как «поврежденные» записи. Следовательно, приложение сможет фильтровать только поврежденные записи, перечислять их ...
Проблема, с которой мы сталкиваемся, состоит в том, что, поскольку только метод GET декодирует содержимое БД, чтобы показать его клиентскому вызову, только метод GET имеет информацию о поврежденной записи. Но поскольку GET должен быть безопасным, можем ли мы позволить GET изменять состояние ресурса в случае его повреждения, несмотря на HTTP-контракт, в котором конкретно говорится, что GET никогда не должен этого делать?
Если нет, и в случае, если нам следует избегать использования GET для изменения какого-либо ресурса даже в этом предельном случае, мы будем вынуждены либо регистрировать поврежденные записи, чтобы воздействовать на них вручную, либо выполнять пакетный запуск, чтобы сделать это для нас. , Ни один из них не особенно привлекателен.