TGViewer
10 минут до кода 10 минут до кода @ten_minutes_to_code · 228 subscribers
Post #22 133
HTTP-статусы: Почему 200 OK при ошибке — это путь в ад

Самое дурацкое плохое решение, которое можно встретить в архитектуре — это в ответе (Response) отправить статус 200 OK, а в теле ответа (payload) написать
{"error": "server exploded"}

Это буквально ложь в лицо фронтенду.

Статус-код — это первый и самый быстрый фильтр, по которому система понимает, стоим мы еще на ногах или пора запускать сценарий спасения. Если ты возвращаешь «Окей» там, где всё сгорело, ты заставляешь фронтенд парсить каждый JSON просто чтобы узнать, не случилась ли беда. Это быстро превращается в хаос.

Глобально все ответы сервера делятся на пять категорий, но в ежедневной разработке мы живем в четырех. Первая — это 1xx (handshake), технические протокольные вещи, в которые новичку лезть не обязательно. А вот дальше начинается база.

Счастье и переезды: 2xx и 3xx

👌 200 OK — наш идеал. Этот статус означает, что вся цепочка логики под капотом отработала ровно так, как задумывал инженер. Никаких эксепшенов, база ответила, данные валидны.

Когда система эволюционирует, ресурсы начинают мигрировать. Для этого есть 301 и 302 статусы — редиректы. 301 Moved Permanently — это «мы переехали навсегда», забудь старый адрес. 302 Found — «мы тут временно ремонт делаем, постучись пока по этой ссылке».

Это нужно, когда вы переименовываете эндпоинты или статьи, чтобы старые ссылки из поисковиков не превращались в тыкву, а прозрачно перебрасывали пользователя куда нужно.

Клиентские косяки: Группа 4xx

Тут сервер выступает в роли строгого фейсконтрольщика. Если прилетает 4xx — значит, проблема в самом запросе.

➖ 401 Unauthorized: Ты не показал паспорт. Сервер не понимает, кто ты такой. Либо ты не передал токен, либо твой логин/пароль — не правильные.
➖ 403 Forbidden: Самый тонкий момент. Сервер узнал тебя в лицо, паспорт проверен, но он говорит: «Я знаю, что ты — Свят, но в эту админку тебе заходить нельзя». У тебя просто нет прав на этот конкретный ресурс. Иди проси разрешения у администратора.
➖ 404 Not Found: Классика. Ресурс не найден. Это не обязательно «страница 404», это может быть попытка загрузить картинку, которой не существует, или опечатка в URL адресе API.

Когда бэкенд «посыпался»: Группа 5xx

Это категория боли. 500 Internal Server Error означает, что на сервере что-то пошло не так, и он просто упал в конвульсиях. Здесь фронтенд бессилен — он не знает, почему всё сломалось. Чтобы разобраться, инженеру нужно лезть в логи сервера и смотреть, на какой строчке кода всё «бахнуло». Есть еще мерзкая 503 Service Unavailable, когда гейтвей или балансировщик не может достучаться до сервиса, но это уже вопросы к инфраструктуре.

💡 Статус-код — это триггер для фронтенда. Если пришла «четверка» или «пятерка», фронт даже не пытается парсить данные для отрисовки интерфейса, он сразу уходит в ветку обработки ошибки, показывает алерт или страницу-заглушку. Это экономит ресурсы и делает систему предсказуемой.

Список всех статус кодов с объяснениями что они обозначают всегда можно подсмотреть в документации MDN. Полезно переодически перечитывать их, потому что список кодов регулярно обновляется.

😉 Главное, не будьте теми, кто маскирует пожар под «200 OK».

Если что-то всё ещё звучит запутанно — пиши вопросы в комментах, я обязательно отвечу. А если всё разложилось по полочкам — ставь 🔥, так я пойму, что пост был полезен

10МДК
  • 🔥 11
  • 👍 3
  • ❤ 2
More from @ten_minutes_to_code
  1. May 28, 2026Первый сезон получился про путь “от пользователя к инженеру”. Именно эту картину мы весь с…
  2. May 28, 2026Когда я запускал этот канал, у меня была довольно простая идея: писать каждый день коротки…
  3. May 7, 2026Почему нормализация БД — это чистая логика, а не бюрократия На любом ongoing-проекте требо…
  4. May 3, 2026🤔 А где новые посты? Сори что вот так пропал без предупреждения, но я думал что справлюсь…
  5. Apr 29, 2026Почему HTTPS не спасет ваши секреты Замочек в адресной строке браузера — это мощное успоко…
  6. Apr 28, 2026Целостность данных против иллюзии атомарности Начинающий разработчик видит базу данных как…
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 →