Какие HTTP-статус коды указывают на ошибку сервера (5xx)?

Ответ

Коды состояния 5xx (Server Error) означают, что сервер не смог выполнить запрос по своей вине. Основные из них:

  • 500 Internal Server Error: Общая ошибка сервера без уточнения причины.
  • 502 Bad Gateway: Сервер, выступая в роли шлюза или прокси, получил недопустимый ответ от вышестоящего сервера.
  • 503 Service Unavailable: Сервер временно не может обработать запрос (перегрузка, техническое обслуживание). Заголовок Retry-After может указывать, когда повторить попытку.
  • 504 Gateway Timeout: Сервер, выступая в роли шлюза или прокси, не дождался ответа от вышестоящего сервера в отведенное время.

Практический пример проверки в автотесте (Python):

import requests

# Отправляем запрос к эндпоинту, который может упасть
response = requests.get("https://api.example.com/unstable-endpoint")

# Проверяем, что статус-код относится к ошибкам сервера
assert 500 <= response.status_code < 600, 
    f"Ожидалась ошибка 5xx, но получен {response.status_code}"

# Или проверяем конкретный код, например, 503
if response.status_code == 503:
    print("Сервер временно недоступен. Проверить Retry-After header.")

Ответ 18+ 🔞

А, слушай, вот эта вся хуйня с кодами 5xx — это когда сервер сам себя в жопу выебал, понимаешь? Не клиент виноват, а вот эта железяка на той стороне просто не справилась. Пиздец, короче.

Вот основные, которые тебе в глаза сразу бросятся:

  • 500 Internal Server Error: Это классика, ёпта! Сервер просто плюнул в потолок и говорит: «Бля, я сам не знаю, что случилось, но у меня всё поехало». Без подробностей, просто пиздец и точка.
  • 502 Bad Gateway: Это когда наш сервер, как посредник, полез куда-то дальше, а оттуда ему приехала такая дичь в ответ, что он аж охренел и не знает, что с этим делать. Типа «чё за хуйню ты мне прислал, я такое передавать не буду».
  • 503 Service Unavailable: А вот это уже поинтереснее. Сервер вроде жив, но говорит: «Отъебись, я перегружен/обновляюсь/просто не хочу сейчас». Иногда даже вежливо пишет в заголовке Retry-After, мол, зайди попозже, сука.
  • 504 Gateway Timeout: Это полный аналог 502, только здесь сервер-посредник не охренел от ответа, а просто его не дождался. Сидел, сидел, хуйней страдал, время вышло — и пошёл клиенту такой ответ отсылать.

Ну и как это в тестах проверить, чтоб не выглядеть идиотом? Смотри, на питоне это делается элементарно, блядь:

import requests

# Дёргаем какой-нибудь кривой эндпоинт, который может и грохнуться
response = requests.get("https://api.example.com/unstable-endpoint")

# А теперь проверяем, что нам прилетело именно по серверной части, а не мы долбоёбы
assert 500 <= response.status_code < 600, 
    f"Ожидалась ошибка 5xx, но получен {response.status_code}"

# Ну или если ты ждёшь конкретно 503, то можно так
if response.status_code == 503:
    print("Сервер временно недоступен. Проверить Retry-After header.")

Вот и вся магия. Главное — помни: если видишь 5xx, то это не ты криво запрос написал, это там, на той стороне, у них мартышня какая-то происходит. Расслабься и иди пить кофе, пусть админы разбираются, ебать их в сраку.