Ответ
Коды состояния 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, то это не ты криво запрос написал, это там, на той стороне, у них мартышня какая-то происходит. Расслабься и иди пить кофе, пусть админы разбираются, ебать их в сраку.