[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-tolerant-reader::ru":3,"gloss-cluster-tolerant-reader::ru":26,"gloss-next-tolerant-reader::ru":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"tolerant-reader","integration","Толерантный читатель","Толерантный читатель (tolerant reader) — это клиент, написанный так, чтобы читать только те части ответа, которые ему действительно нужны, и игнорировать всё остальное, чтобы добавление на той стороне не стало сбоем на вашей. Это потребляющая половина правила о том, что добавляющие изменения должны быть безопасными: поставщик может добавить поле, никого не сломав, только если читающая сторона умеет пожимать плечами на незнакомые поля.\n\nОтказ, который это предотвращает, распространён и легко устраним. Парсер, настроенный отвергать неизвестные свойства, превращает любое добавление наверху в ломающее изменение — то есть поставщик, не сделавший ничего плохого, кладёт вашу интеграцию. То же самое происходит не с полями, а со значениями: код, который ветвится по статусу и падает на всём неожиданном, откажет в первый же раз, когда поставщик заведёт новый статус, а новые статусы — самое обычное продуктовое изменение из возможных.\n\nНа практике толерантность означает нечто более узкое, чем звучит. Читайте поля, которые используете, остальное пропускайте. Считайте перечисления открытыми: незнакомое значение нужно отправлять на ручной разбор, а не падать и уж тем более не сопоставлять его молча с неверным значением по умолчанию. Не опирайтесь на порядок ключей или элементов массива, если контракт этого не обещает. Не считайте отсутствие необязательного поля осмысленным сигналом. Проверяйте то, что потребляете, а не всю полезную нагрузку.\n\nУ толерантности есть цена, которую стоит назвать вслух: читатель, игнорирующий всё незнакомое, проигнорирует и то изменение, о котором вам нужно было узнать. Разрешает это связка «толерантно в рантайме, громко в логах»: записывайте неизвестные поля и нераспознанные значения, чтобы интеграция продолжала работать, а человек всё-таки узнал, что другая сторона сдвинулась. Именно из такой строки лога команда обычно и узнаёт, что поставщик что-то выпустил, задолго до любого официального уведомления.","Толерантный читатель берёт только нужные поля и игнорирует остальные, чтобы добавление на стороне поставщика не ломало вашу интеграцию.",null,[11,14,17,20,23],{"slug":12,"name":13},"api-versioning","API Versioning (версионирование API)",{"slug":15,"name":16},"contract-testing","Контрактное тестирование (Contract Testing)",{"slug":18,"name":19},"openapi-specification","OpenAPI Specification",{"slug":21,"name":22},"schema-registry","Реестр схем (schema registry)",{"slug":24,"name":25},"webhook","Вебхук (Webhook)",[27,31,34,38,41,44,47,50,53,56,59,62],{"slug":28,"category":5,"name":29,"updated_at":30},"api-deprecation","Устаревание API","2026-09-08T21:32:37+00:00",{"slug":32,"category":5,"name":33,"updated_at":30},"app-review","Проверка приложения",{"slug":35,"category":5,"name":36,"updated_at":37},"backend-for-frontend","Backend for Frontend (BFF)","2026-09-08T21:32:36+00:00",{"slug":39,"category":5,"name":40,"updated_at":30},"bulk-api","Массовый API",{"slug":42,"category":5,"name":43,"updated_at":37},"concurrency-limit","Лимит параллельных запросов",{"slug":45,"category":5,"name":46,"updated_at":30},"connector-versioning","Версионирование коннекторов",{"slug":48,"category":5,"name":49,"updated_at":30},"delete-propagation","Распространение удалений",{"slug":51,"category":5,"name":52,"updated_at":30},"effective-permissions","Действующие права",{"slug":54,"category":5,"name":55,"updated_at":37},"event-ordering","Порядок событий",{"slug":57,"category":5,"name":58,"updated_at":37},"field-mapping","Сопоставление полей (field mapping)",{"slug":60,"category":5,"name":61,"updated_at":37},"function-schema","Схема функции",{"slug":63,"category":5,"name":64,"updated_at":37},"grpc","gRPC"]