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

Ответ

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

  • 500 Internal Server Error — общая ошибка сервера без конкретной причины (например, необработанное исключение в коде).
  • 501 Not Implemented — сервер не поддерживает функциональность, требуемую для выполнения запроса.
  • 502 Bad Gateway — сервер, выступая в роли шлюза или прокси, получил недопустимый ответ от вышестоящего сервера.
  • 503 Service Unavailable — сервер временно не может обработать запрос (техническое обслуживание, перегрузка). Часто сопровождается заголовком Retry-After.
  • 504 Gateway Timeout — сервер не получил своевременный ответ от вышестоящего сервера, выступая в роли шлюза или прокси.
  • 505 HTTP Version Not Supported — сервер не поддерживает версию HTTP-протокола, использованную в запросе.

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

import requests

def test_api_availability():
    response = requests.get("https://api.example.com/health")
    # Убеждаемся, что нет ошибок сервера
    assert response.status_code not in range(500, 600), 
        f"Server error {response.status_code}: {response.text}"

Ответ 18+ 🔞

А, слушай, вот эта вся хуйня с серверными ошибками — это же классика, пиздец! Ты сидишь, такой, всё проверил, запрос красивый отправил, а в ответ — полная жесть. Это когда сервер, сука, сам с собой не справился, как пьяный мужик на льду. Вот эти коды 5xx — они как крик души железного ящика: «Бля, я не могу!».

Смотри, основные, которые тебе в глаза будут бросаться постоянно:

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

А вот как это в тестах отлавливать, чтобы не обосраться (Python, requests):

import requests

def test_api_availability():
    response = requests.get("https://api.example.com/health")
    # Главное — убедиться, что сервер не лёг и не дрыгает ногами
    assert response.status_code not in range(500, 600), 
        f"Server error {response.status_code}: {response.text}"

Смотри, логика проще некуда: если статус в диапазоне 500-599 — это пиздец, товарищи. Сервер горит. И эту ошибку надо ловить сразу, а не потом гадать, почему всё посыпалось. Вот так вот, коротко и без соплей.