Толерантный читатель

Толерантный читатель (tolerant reader) — это клиент, написанный так, чтобы читать только те части ответа, которые ему действительно нужны, и игнорировать всё остальное, чтобы добавление на той стороне не стало сбоем на вашей. Это потребляющая половина правила о том, что добавляющие изменения должны быть безопасными: поставщик может добавить поле, никого не сломав, только если читающая сторона умеет пожимать плечами на незнакомые поля. Отказ, который это предотвращает, распространён и легко устраним. Парсер, настроенный отвергать неизвестные свойства, превращает любое добавление наверху в ломающее изменение — то есть поставщик, не сделавший ничего плохого, кладёт вашу интеграцию. То же самое происходит не с полями, а со значениями: код, который ветвится по статусу и падает на всём неожиданном, откажет в первый же раз, когда поставщик заведёт новый статус, а новые статусы — самое обычное продуктовое изменение из возможных. На практике толерантность означает нечто более узкое, чем звучит. Читайте поля, которые используете, остальное пропускайте. Считайте перечисления открытыми: незнакомое значение нужно отправлять на ручной разбор, а не падать и уж тем более не сопоставлять его молча с неверным значением по умолчанию. Не опирайтесь на порядок ключей или элементов массива, если контракт этого не обещает. Не считайте отсутствие необязательного поля осмысленным сигналом. Проверяйте то, что потребляете, а не всю полезную нагрузку. У толерантности есть цена, которую стоит назвать вслух: читатель, игнорирующий всё незнакомое, проигнорирует и то изменение, о котором вам нужно было узнать. Разрешает это связка «толерантно в рантайме, громко в логах»: записывайте неизвестные поля и нераспознанные значения, чтобы интеграция продолжала работать, а человек всё-таки узнал, что другая сторона сдвинулась. Именно из такой строки лога команда обычно и узнаёт, что поставщик что-то выпустил, задолго до любого официального уведомления.

Похожие термины

Ещё термины: Интеграции