← Назад к вопросам

Какие знаешь статус-коды?

1.0 Junior🔥 161 комментариев
#API тестирование#Сети и протоколы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

HTTP Статус-коды

Статус-коды HTTP указывают на результат запроса. Они делятся на 5 категорий:

1xx — Информационные (1xx)

Предварительный ответ перед окончательным результатом.

  • 100 Continue — продолжить отправку тела запроса
  • 101 Switching Protocols — переключение протокола (например, на WebSocket)

2xx — Успешные (2xx)

Запрос выполнен успешно:

  • 200 OK — стандартный успешный ответ
  • 201 Created — ресурс создан (обычно используется при POST)
  • 202 Accepted — запрос принят на обработку (асинхронная обработка)
  • 204 No Content — успешно, но нет содержимого для отправки (обычно DELETE)
  • 206 Partial Content — частичный контент (при запросе с Range header)

3xx — Переадресация (3xx)

Требуется дополнительное действие для завершения запроса:

  • 301 Moved Permanently — ресурс постоянно перемещен, браузер должен обновить закладку
  • 302 Found — временное перемещение (обычно редирект)
  • 304 Not Modified — кэш валиден, отправлять не нужно
  • 307 Temporary Redirect — временный редирект (сохраняет метод запроса)

4xx — Ошибки клиента (4xx)

Клиент отправил некорректный запрос:

  • 400 Bad Request — синтаксическая ошибка в запросе
  • 401 Unauthorized — требуется аутентификация
  • 403 Forbidden — аутентифицирован, но доступа нет
  • 404 Not Found — ресурс не найден
  • 405 Method Not Allowed — метод не поддерживается (например, PUT вместо POST)
  • 409 Conflict — конфликт данных (например, duplicate при создании)
  • 410 Gone — ресурс больше не существует и не вернется
  • 422 Unprocessable Entity — данные валидны синтаксически, но не прошли бизнес-валидацию
  • 429 Too Many Requests — превышен лимит запросов (rate limiting)

5xx — Ошибки сервера (5xx)

Сервер не смог обработать корректный запрос:

  • 500 Internal Server Error — внутренняя ошибка сервера
  • 501 Not Implemented — функция не реализована
  • 502 Bad Gateway — сервер-прокси получил некорректный ответ
  • 503 Service Unavailable — сервис временно недоступен (обслуживание)
  • 504 Gateway Timeout — превышено время ожидания ответа

Примеры тестирования

import requests
import pytest

def test_create_user_success():
    response = requests.post(
        "https://api.example.com/users",
        json={"name": "John", "email": "john@test.com"}
    )
    assert response.status_code == 201  # Created
    assert response.json()["id"] is not None

def test_get_nonexistent_user():
    response = requests.get("https://api.example.com/users/999")
    assert response.status_code == 404  # Not Found

def test_unauthorized_access():
    response = requests.get(
        "https://api.example.com/admin",
        headers={"Authorization": "Bearer invalid_token"}
    )
    assert response.status_code == 401  # Unauthorized

def test_rate_limiting():
    for _ in range(101):
        response = requests.get("https://api.example.com/data")
    assert response.status_code == 429  # Too Many Requests

@pytest.mark.parametrize("status_code,expected", [
    (200, True),
    (201, True),
    (404, False),
    (500, False),
])
def test_response_validation(status_code, expected):
    response = Mock()
    response.status_code = status_code
    is_success = 200 <= status_code < 300
    assert is_success == expected

Таблица для быстрого справки

ДиапазонЗначениеПримеры
2xxУспех200, 201, 204
3xxРедирект301, 302, 304
4xxОшибка клиента400, 401, 403, 404, 422
5xxОшибка сервера500, 502, 503

В API-тестировании критично проверять не только успешные коды (2xx), но и обработку ошибок (4xx и 5xx).