Ответ
Коды состояния HTTP 4xx указывают на ошибки, вызванные клиентом (неправильный запрос). Основные из них:
| Код | Название | Причина и контекст |
|---|---|---|
| 400 | Bad Request | Сервер не может обработать запрос из-за неверного синтаксиса (например, невалидный JSON, отсутствие обязательного поля). |
| 401 | Unauthorized | Требуется аутентификация, но она не предоставлена или не прошла (часто связан с заголовком WWW-Authenticate). |
| 403 | Forbidden | Сервер понял запрос, но отказывается его авторизовать. У клиента нет прав доступа к ресурсу. |
| 404 | Not Found | Сервер не может найти запрошенный ресурс (неверный URL). |
| 405 | Method Not Allowed | Метод HTTP (GET, POST и т.д.) не поддерживается для данного URL. |
| 408 | Request Timeout | Сервер не получил полный запрос в отведенное время. |
| 429 | Too Many Requests | Клиент отправил слишком много запросов за короткое время (ограничение скорости, rate limiting). |
Пример проверки ошибки 400 в автотесте (Python, requests):
import requests
def test_create_user_with_invalid_email():
url = "https://api.example.com/users"
# Отправляем запрос с заведомо невалидным email
payload = {"email": "not-an-email", "name": "Test"}
response = requests.post(url, json=payload)
# Проверяем, что сервер корректно отвечает ошибкой клиента
assert response.status_code == 400
# Проверяем структуру ответа об ошибке
error_data = response.json()
assert "error" in error_data
assert "email" in error_data["error"].lower() Ответ 18+ 🔞
А, ну вот, смотри, опять эти клиенты накосячили, блядь! HTTP 4xx — это как раз про них, про этих распиздяев, которые запросы кривые шлют. Сервер тут нихуя не виноват, он просто в ахуе с того, что ему приносят.
Вот табличка, чтобы не ебать мозг:
| Код | Название | Что за пиздец? |
|---|---|---|
| 400 | Bad Request | Сервер получил какую-то хуйню вместо нормального запроса. Типа JSON сломался или поле обязательное забыли. Говорит: «Сам-то понял, что отправил, мудак?» |
| 401 | Unauthorized | «А ты кто такой, сука?» Требует логин-пароль или токен, а ты нихуя не предоставил, либо предоставил такое, что хоть святых выноси. |
| 403 | Forbidden | «Я-то тебя понял, но иди нахуй». Права есть? Нет. Доступа нет. Всё, пиздуй отсюда. |
| 404 | Not Found | Классика, ёпта! «Тут ничего нет, блядь». Искал страницу, API эндпоинт — а его нихуя. Может, опечатался, а может, его и не было никогда. |
| 405 | Method Not Allowed | «Ты че, охренел?» Хочешь POST-ом удалить, а можно только DELETE. Или GET-ом создать что-то. Не, так не работает. |
| 408 | Request Timeout | Сервер ждал-ждал, пока ты свой запрос соберёшь, да заебался. «Та ну тебя нахуй, я пошёл». |
| 429 | Too Many Requests | О, это моё любимое! «Успокойся, блядь!» Слишком много запросов за раз отправил. Сервер тебя rate limit-ом по ебалу накрыл, жди теперь. |
Вот, смотри, как в автотесте на 400 ошибку проверить (Python, requests):
import requests
def test_create_user_with_invalid_email():
url = "https://api.example.com/users"
# Шлём на сервер откровенную хуйню вместо email
payload = {"email": "not-an-email", "name": "Test"}
response = requests.post(url, json=payload)
# Проверяем, что сервер не обосрался, а культурно послал нас с нашей же хернёй
assert response.status_code == 400
# Заодно глянем, что он там внятного сказал
error_data = response.json()
assert "error" in error_data
assert "email" in error_data["error"].lower()
Вот и вся магия, блядь. Клиент — всегда мудак, пока не доказано обратное.