awesome-everything EN
↑ Обратно к восхождению

API

Статус-коды: тест с выбором ответа

Суть Синтез по юниту статус-кодов в формате выбора: подобрать верный код под сценарий, разделить ответственность 4xx/5xx, Retry-After и ловушка идемпотентности.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть сценариев, в каждом ты выбираешь статус-код в реальных условиях. Не «что значит 404», а какой код заставит кэши, дашборды и циклы ретраев ниже по потоку принять верное решение.

Цель

Убедиться, что ты можешь подобрать корректный статус под ситуацию и обосновать его — связав нюансы 2xx, словарь 4xx, раздел ответственности 4xx/5xx и правила ретраев/идемпотентности, к которым вёл юнит.

Викторина

Эндпоинт POST /orders валидирует заказ, синхронно пишет его в БД, и ресурс теперь существует. Какой статус, и что ещё должен нести ответ?

Викторина

Эндпоинт принимает запрос, ставит его в Kafka и возвращается сразу; воркер обрабатывает его через секунды. Какой статус честен?

Викторина

Приходит запрос с валидным JSON, все обязательные поля на месте и правильных типов, но quantity = -3 — нарушение бизнес-правила. Какой класс и код подходят лучше всего?

Викторина

Обратный прокси проксирует запрос в апстрим-сервис, который жив, но возвращает искажённый, обрезанный ответ, который прокси не может распарсить. Какой статус прокси вернёт клиенту?

Викторина

Клиент упёрся в rate limit, и сервер возвращает 429 с `Retry-After: 30`. Клиент также гоняет общий экспоненциальный бэкофф с джиттером. Что ему делать?

Викторина

Неидемпотентный POST /charge ловит таймаут 504, ключ идемпотентности не отправлен. Списание могло пройти, а могло и нет. Какое поведение клиента корректно?

Итог

Сквозная линия: первая цифра — машинная инструкция, а точный под-код несёт реальную информацию контракта. 2xx делится на 201 (+Location) для синхронного создания, 202 для принято-но-async, 204 для сознательно пустого успеха. Словарь 4xx говорит клиенту, что чинить — 400 (синтаксис) vs 422 (значения) vs 409 (состояние). Под-коды 5xx распределяют вину — 500 твой баг, 502 плохой апстрим, 503 сознательная недоступность, 504 таймаут, где работа могла тайно завершиться. Ретрай 5xx и 429, уважь Retry-After перед бэкоффом и никогда слепо не ретрай неидемпотентный запрос после таймаута — вместо этого тянись за ключом идемпотентности.

Продолжить восхождение ↑Статус-коды: тест на свободное воспроизведение
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.