Ошибка 400 Bad Request в API: что не так с запросом
Код 400 означает, что сервер отказался обрабатывать запрос, потому что считает его неверным. Причина почти всегда в самом запросе, и её можно найти без доступа к серверу.
Что означает 400
Сервер получил запрос, но не может или не будет его обрабатывать: сломан синтаксис, не хватает обязательных полей, у значения не тот тип или формат. Часть API для ошибок в значениях использует код 422 Unprocessable Content, а 400 оставляет для нечитаемого запроса, но многие отвечают 400 в обоих случаях. Повторять тот же запрос без изменений бесполезно.
Как найти причину
Сначала прочитайте тело ответа: хороший API называет поле и правило, например amount must be positive. Затем проверьте JSON валидатором: лишняя запятая или одинарные кавычки дают 400 ещё до проверки полей. Убедитесь, что отправлен заголовок Content-Type: application/json, иначе сервер не поймёт тело. Сверьте поля с документацией: строка вместо числа, дата не в том формате, пропущенное обязательное поле. В адресе пробелы и кириллица должны быть закодированы.
curl -i -X POST https://api.example.com/orders \
-H "Content-Type: application/json" \
--data-binary "@order.json"400 от nginx и в браузере
Сообщение 400 Bad Request: Request Header Or Cookie Too Large значит, что заголовки или cookie превысили лимит сервера; помогает очистка cookie этого сайта. The plain HTTP request was sent to HTTPS port означает, что обычный HTTP-запрос ушёл на порт, где ждут HTTPS: в адресе нужен https://. В обоих случаях запрос не доходит до приложения, и в его логах ничего не будет.
400 как ожидаемый результат теста
Для неверных данных 400 — правильный ответ, и его стоит проверять отдельно: код, текст ошибки с именем поля и то, что сервер ничего не создал. Если на неверные данные приходит 200 или 500, это ошибка сервиса. В Checkcraft такие негативные сценарии задаются правилами на код ответа и поля ошибки, без кода.
Повторите это на своём API
Checkcraft — настольная программа: сохраняет проверки ответа API без кода и показывает, что не совпало. Начните с учебного примера, затем подставьте свои обезличенные данные. Free работает на Windows и Linux без ограничения срока.
Скачать FreeКак получить и запустить приложениеСкачивание без регистрации и почты, архив готов за пару минут. Состав бесплатной версии опубликован на странице тарифов.
Документация
Начните с примера по ссылкам и сопоставьте результат с требованием своей проверки.