API
APIs: review с выбором ответа
Шесть вопросов, которые проходят сквозь весь трек. Каждый отражает решение на review реального публичного API — не определение для зубрёжки, а место, где одно слабое звено держит на себе следующее.
Убедись, что можешь проследить каскад от начала до конца: как моделирование ресурсов готовит честные status-коды, как status-коды управляют retry клиента, как пагинация и OpenAPI-контракт держат оба корректными под нагрузкой и где здесь протокол и rate limit.
Команда смоделировала POST /chargeCard вместо ресурса payments. Через месяцы — двойные списания. Какое звено в каскаде корневое?
Что лучше всего объясняет, почему HTTP status-код — это контракт, а не украшение?
Эндпоинт отдаёт список на 2M строк, просматриваемый вживую, через OFFSET/LIMIT, и глубокие страницы тормозят и иногда пропускают строки. Лучший структурный фикс?
Деплой переименовал поле конверта ошибки с `message` на `detail` и ужесточил enum статуса. CI был зелёный, а клиенты сломались в проде. Чего не хватало и какие изменения были проблемой?
Коллега хочет сделать публичный API на gRPC, потому что бенчмарки показывают ~77% ниже latency, ~10x меньше сообщения и выше throughput. Как рассуждать сеньору?
Retry-шторм на пике превращается в outage: десятки тысяч дублирующих записей в секунду бьют в БД. Какой контроль сдержал бы это и как он должен вести себя?
Трек — это одна цепь, а не чеклист. Моделирование ресурсов (существительные, не-CRUD-действия как суб-ресурсы) решает, могут ли status-коды быть честными; status-коды — машиночитаемый retry-контракт (201/409/429, Idempotency-Key на небезопасных записях, Retry-After на дросселях); cursor-пагинация держит большие/живые чтения плоскими и стабильными; spec-first OpenAPI с break-diff в CI останавливает тихий дрейф; версионирование развивается аддитивно и поднимает версию только на реальных break с политикой Sunset; протокол — ортогональная ось (REST на edge, gRPC внутри); rate limit с 429 + Retry-After не даёт retry-шторму стать outage. Ревьюй каскад, потому что каждое звено держит следующее.