Ответ
HTTP статус-код 400 Bad Request указывает, что сервер не может (или отказывается) обработать клиентский запрос из-за ошибки, которая воспринимается как вина клиента (client error).
Типичные причины:
- Неверный синтаксис запроса (например, некорректный JSON или XML в теле).
- Отсутствие обязательных параметров или заголовков.
- Неподдерживаемый метод запроса для данного URL.
- Превышение допустимого размера запроса.
- Несоответствие типа данных (например, передача числа вместо строки).
Пример сценария и ответа: Запрос:
POST /api/users HTTP/1.1
Content-Type: application/json
{
"name": "Alice",
"email": "not-an-email", // Некорректный формат email
"age": "twenty-five" // Ожидается число, передана строка
}
Ответ сервера:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": "Validation failed",
"details": [
"Field 'email' must be a valid email address",
"Field 'age' must be a number"
]
}
Что проверять в тестах: валидацию всех входных параметров, форматы данных (JSON, XML), обязательные поля и корректность заголовков (например, Content-Type).
Ответ 18+ 🔞
А, слушай, вот эта хуйня — 400 Bad Request. Это когда сервер смотрит на твой запрос, морщится и говорит: «Ну ты, блядь, совсем? Что за пиздопроебина у тебя в руках?»
Короче, это твоя вина, чувак. Ты отправил какую-то дичь, а сервер её жрать не стал. Как будто ты в ресторан пришёл и заказал «суп с гвоздями и компот из носков». Тебе вежливо так: «Извините, шеф отказывается это готовить».
На что обычно сервер охуевает и посылает тебя нахуй:
- Синтаксис кривой. Ты в JSON'е запятую потерял или скобку не закрыл. Сервер парсит это и у него волосы дыбом: «Что это за хуйня? Это не JSON, это бред сивой кобылы!»
- Чего-то не хватает. Забыл обязательный параметр передать, заголовок
Content-Typeне поставил. Сервер ждёт, ждёт, а потом: «Ну и где, блядь, твои данные? Я что, телепат?» - Метод не тот. Пытаешься
DELETEотправить на URL, который только дляGET. Сервер в ответ: «Ты чё, охренел? Здесь так не принято!» - Размер не тот. Отправил файл размером с Библиотеку Конгресса, когда лимит — 10 МБ. «Овердохуища, братан, убавь!»
- Тип данных — пиздец. Ожидалось число, а ты строку «двадцать пять» прислал. Или в поле
emailнаписал «я_крутой_чел@жопа». Сервер смотрит и думает: «Э, бошка, думай! Это же ебать не email!»
Вот, смотри, как это выглядит вживую:
Твой кривой запрос:
POST /api/users HTTP/1.1
Content-Type: application/json
{
"name": "Alice",
"email": "not-an-email", // Это ж не почта, это просто строка какая-то, блядь
"age": "twenty-five" // А тут вместо цифры — буквы! Сервер в ахуе!
}
Ответ сервера (вежливый, но с подтекстом «иди учи матчасть»):
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": "Validation failed",
"details": [
"Field 'email' must be a valid email address",
"Field 'age' must be a number"
]
}
Так что, когда пишешь тесты, проверяй эту всю муть:
- Валидацию. Все поля, которые обязательны, — шли. Все, которые не обязательны, — тоже проверь, что не сломается, если их нет.
- Форматы. JSON должен быть идеальным, XML — валидным. Никаких лишних пробелов, кавычек ебаных левых.
- Заголовки. Особенно
Content-Type. Если шлёшь JSON, так и пишиapplication/json, а неtext/plain, а то сервер тебя не поймёт и вышлет в пизду. - Типы данных. Числа — числами, булевы значения —
true/false, а не «да»/«нет».
Запомни: 400 — это как красная лампочка «Ты — мудак». Исправляй запрос и шли заново.