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

API

APIs: чтение контракта и ответа

Суть Читай реальные API-контракты, ответы, запрос пагинации и rate-limit-заголовки, затем выбирай сеньорский ход — фикс с наибольшим рычагом или верную интерпретацию.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

Проблемы API диагностируются в контракте и на проводе: таблица маршрутов, ответ, SQL-запрос страницы, набор заголовков. Прочитай каждый и выбери ход, который сеньор сделает первым.

Цель

Потренируй review-цикл, который ты гоняешь на каждом публичном API: прочитай контракт или ответ, предскажи, где он сломается под нагрузкой или retry, и тянись к структурному фиксу до того, как тянуться к обходу.

Сниппет 1 — таблица маршрутов

POST   /chargeCard
POST   /refundCharge?id=123
GET    /getUserOrders?user=42
POST   /orders/{id}/cancel?action=cancel
Викторина

В этой таблице маршрутов смешано несколько ошибок моделирования. Какая единственная коррекция даёт наибольший рычаг и почему она важнее всего?

Сниппет 2 — ответ на создание платежа

POST /payments
Idempotency-Key: 8f1c-...-a9
--> HTTP/1.1 200 OK
    { "status": "ok", "error": null }
Викторина

Клиент прислал Idempotency-Key, а сервер вернул 200 без id ресурса. Дальше следует retry по таймауту. Что не так и что сервер должен возвращать?

Сниппет 3 — запрос глубокой страницы

-- страница 5001 живой растущей ленты
SELECT id, created_at, title
FROM posts
ORDER BY created_at DESC
OFFSET 100000 LIMIT 20;
Викторина

Этот запрос обслуживает живую растущую ленту, и глубокие страницы тормозят и иногда теряют или дублируют посты. Какова cursor-перепись и что она даёт?

Сниппет 4 — rate-limit-заголовки

HTTP/1.1 429 Too Many Requests
Retry-After: 8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1716998400
Викторина

Клиент получил этот ответ. Каково корректное поведение клиента и что означает каждый сигнал?

Итог

Любой review API читает одни и те же артефакты: таблица маршрутов говорит, существительные ли ресурсы (и значит, могут ли status-коды быть честными); ответ на создание должен быть 201 + Location на первой записи и 200 на идемпотентном повторе, а не голый 200 без id; запрос глубокой страницы должен быть keyset-курсором по уникальному композитному ключу сортировки, а не OFFSET; а 429 с Retry-After + X-RateLimit-* — кооперативный backoff-контракт, который клиент обязан чтить. Прочитай контракт, предскажи сбой под retry или нагрузкой, затем применяй структурный фикс.

Продолжить восхождение ↑APIs: спроектируй и собери production API
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.