← Назад к вопросам
Какие знаешь статус-коды?
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).