К содержанию
CheckcraftСкачать
Практический сценарий

Ошибка 500 в API: виноват сервер или запрос

Код 500 означает, что сервер упал при обработке запроса. Чинить нужно сервер, но часто падение вызывают конкретные данные в запросе, и их можно найти снаружи.

Checkcraft ·

Поможем с первой проверкой →

Что именно означает 500

Сервер принял запрос и не смог его обработать из-за внутренней ошибки, обычно необработанного исключения. Правильный сервер на неверные данные отвечает 400 или 422 с объяснением. Если вместо этого приходит 500, это ошибка сервера, даже когда её спровоцировал ваш запрос.

Как найти, что в запросе ломает сервер

Повторите запрос и посмотрите тело ответа: там бывает текст ошибки или traceId. Затем упрощайте запрос: уберите необязательные поля, замените значения на заведомо правильные, проверьте пустые строки, null, очень длинные значения и спецсимволы. Когда 500 пропадёт, последнее изменение и есть причина. По traceId или времени запроса разработчик найдёт исключение в логах.

curl -i -X POST https://api.example.com/orders -H "Content-Type: application/json" -d "@order.json"

Чем 500 отличается от 502, 503 и 504

502 Bad Gateway и 504 Gateway Timeout отдаёт прокси или балансировщик: сервис за ним не ответил или ответил с ошибкой. 503 Service Unavailable означает, что сервис перегружен или на обслуживании. В этих случаях запрос обычно ни при чём, проблема в доступности сервиса.

Request failed with status code 500

Это сообщение библиотеки axios: она выбрасывает ошибку на любой ответ вне диапазона 2xx. Сам текст ничего не говорит о причине, смотрите error.response: код, заголовки и тело, которые прислал сервер.

try {
  await axios.post('/api/orders', order);
} catch (error) {
  // Request failed with status code 500: смотрите, что прислал сервер
  console.log(error.response?.status, error.response?.headers, error.response?.data);
}

Как не пропустить 500 в автотестах

Проверяйте код ответа отдельным правилом, а для каждого обязательного поля задавайте свою проверку. Тогда отчёт сразу скажет, что пришёл 500 и на каком запросе, а в Checkcraft рядом будут найденные по traceId записи логов.

Следующий шаг

Повторите это на своём API

Checkcraft — настольная программа: сохраняет проверки ответа API без кода и показывает, что не совпало. Начните с учебного примера, затем подставьте свои обезличенные данные. Free работает на Windows и Linux без ограничения срока.

Скачать FreeКак получить и запустить приложение

Скачивание без регистрации и почты, архив готов за пару минут. Состав бесплатной версии опубликован на странице тарифов.

Документация

MDN: коды ответа HTTP

Начните с примера по ссылкам и сопоставьте результат с требованием своей проверки.

Можно спросить человека

Поможем с первой проверкой

Расскажите, что хотите проверить или на каком шаге остановились. Поможем запустить Checkcraft, подобрать пример и разобраться с первым прогоном. Можно написать до скачивания.

Telegram-группа открытая: не публикуйте пароли, токены и конфиденциальные рабочие данные. Для первого вопроса достаточно описания задачи.

Можно написать напрямую support@checkcraft.ru

Без регистрации. Ответим по email. Это обращение в поддержку, а не подписка на рассылку.