TGViewer
GetAnalyst - Навыки • Системный анализ • Бизнес-анализ GetAnalyst - Навыки • Системный анализ • Бизнес-анализ @getanalysts · 22.5K subscribers
Post #3578 3.56K
✅ 5 пунктов, которые постоянно теряют в ТЗ на API ✅

URL, HTTP-метод, параметры запроса и JSON обычно описаны.


А вот следующие 5 вещей встречаются гораздо реже, хотя именно про них потом начинаются вопросы у разработчиков и проблемы в проде 👇


1️⃣ Кэширование

Если данные можно кэшировать — это должно быть описано в требованиях.
Чаще всего — для операций получения данных (GET).

▫️ Что кэшируем?
▫️ Где: Backend, Redis, другое хранилище?
▫️ Какой TTL (время жизни)?
▫️ Что входит в ключ кэша?
▫️ Когда и кем кэш инвалидируется?

Написать просто «результат кэшировать на 10 минут» часто недостаточно.


2️⃣ Идемпотентность

Что произойдёт, если один и тот же запрос придёт дважды?

Особенно критично для создания заказов, платежей, бронирований и других изменяющих операций.

▫️ Выполним операцию повторно?
▫️ Вернём результат первого запроса?
▫️ Как определим, что запрос повторный?

Пользователь нажал кнопку два раза — система должна знать, что с этим делать.


3️⃣ Единый формат ошибок от API


Не так, что один метод возвращает:
{"error": "Not found"}

другой:
{"message": "Something went wrong"}

а третий свою структуру.

Для API должна быть определена единая модель возврата ошибок:

✅ единая структура JSON-ошибки
✅ правила использования HTTP-статусов

Иначе каждый новый метод постепенно начинает жить своей жизнью.


4️⃣ Что делать, если операция выполнилась только частично

Например:
Backend сохранил данные в БД → вызвал внешнюю систему → внешний вызов завершился ошибкой.

Или:
внешняя система выполнила операцию → а сохранить результат в нашей БД не получилось.

▫️ Что откатываем?
▫️ Что повторяем?
▫️ Нужна ли компенсационная операция?
▫️ В каком состоянии оставляем данные?

Особенно важно в интеграционных сценариях, где один пользовательский запрос запускает несколько операций.


5️⃣ Логирование и мониторинг


Пользователь пишет:

«Вчера в 15:42 я оплатил заказ, но статус не изменился».

Что дальше?

▫️ Есть ли requestId / correlationId?
▫️ Передаётся ли он между сервисами?
▫️ Что пишем в логи?
▫️ Какие технические и бизнес-метрики собираем?
▫️ На какие ошибки должны срабатывать алерты?

Требования к логированию и мониторингу — такая же часть постановки задачи, как JSON запроса и ответа.



Ни один из этих пунктов технически не выглядит чем-то сверхсложным.

Но именно их легко пропустить, а потом выяснять, как должна вести себя система, уже вместе с разработчиками. Иногда в проде 🥲


#RestApiGA

📱 GetAnalyst | 💙 VK | 💬 Max
  • ❤ 25
  • ❤‍🔥 5
  • 👍 2
More from @getanalysts
  1. Sep 28, 2026⌛️ Webhook, SSE, WebSocket, polling или worker: что выбрать для долгой операции? ⌛️ Возьмё…
  2. Sep 27, 2026Уже завтра на самолёт в Сан-Франциско, чтобы пообщаться с коллегами из OpenAI, Anthropic и…
  3. Sep 25, 2026🔥❤️‍🔥🎉 Вау-вау-вау! Вот это мы отметили! 4 часа практики, море вопросов, десятки схем и…
  4. Sep 24, 2026😂👍👍❤️👌😅😊😊😍😘 ❗️До начала 15 минут❗️ 🧡 «Асинхронная интеграция с ИИ-сервисом: от а…
  5. Sep 24, 2026❗️Уже через 3 часа встречаемся онлайн❗️ 👩‍💻 Открытый практикум с Екатериной Ананьевой 🔥…
  6. Sep 24, 2026Пусть хотя бы сегодня всё пойдёт по happy path 🎉🙏🩷 Сегодня праздник у людей, которые сл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →