> Как понимать ошибку в ответе с параметром direction в JSON (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Radium Finance

Стек: JavaScript

> Пример ответа

Короткий ответ

Ошибка с параметром direction в JSON обычно возникает, когда сервер ожидает определённое значение (например, "asc" или "desc"), а клиент передаёт невалидное или отсутствующее поле. Это может быть связано с опечаткой в названии ключа, неверным регистром, типом данных (строка вместо числа) или несоответствием схеме API. Проверьте контракт запроса и корректность сериализации.

Подробное объяснение

Проблема с direction в JSON часто проявляется в контексте сортировки данных на серверной стороне. Ошибка может быть:

  • Синтаксической: JSON невалиден (лишняя запятая, неэкранированные кавычки).
  • Структурной: ключ называется "dir" вместо "direction", или значение передано как true/false вместо строки.
  • Типизационной: сервер ожидает "asc" или "desc", а приходит "ASC" или 1.
  • Логической: поле отсутствует, хотя сервер требует обязательного параметра.

Причина часто кроется в несоответствии между документацией API и реализацией клиента. Например, фронтенд использует fetch с неправильным Content-Type или забывает преобразовать объект через JSON.stringify. Сервер, в свою очередь, может возвращать 400 Bad Request с сообщением вроде "Invalid direction parameter".

На практике

При отладке:

  1. Откройте вкладку Network в DevTools и проверьте тело запроса.
  2. Убедитесь, что Content-Type: application/json и данные корректно сериализованы.
  3. Сравните структуру JSON с ожидаемой схемой (часто описана в Swagger/OpenAPI).
  4. Проверьте, не приводит ли библиотека для HTTP-запросов (axios, fetch) к автоматической трансформации данных.

Если ошибка воспроизводится только в определённых сценариях, возможно, проблема в кодировке или экранировании символов при передаче через URL (если параметр идёт в query string, а не в теле).

Пример кода

JAVASCRIPT
// Неправильно: передача числа вместо строки
fetch('/api/data', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ direction: 1 }) // сервер ждёт "asc" или "desc"
});
// Правильно: строка в нижнем регистре
fetch('/api/data', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ direction: 'asc' })
});
// Проверка перед отправкой
const validateDirection = (dir) => {
const valid = ['asc', 'desc'];
if (!valid.includes(dir)) {
throw new Error(`Invalid direction: ${dir}`);
}
return dir;
};

Как отвечать на собеседовании

Начните с конкретного сценария: "Ошибка обычно связана с несоответствием типов или структуры данных". Затем перечислите три основные причины: синтаксис JSON, неверное значение, отсутствие поля. Подчеркните важность проверки через DevTools и контракта API. Если спросят про обработку, упомяните валидацию на клиенте и fallback-значения. Для senior-уровня добавьте про idempotency и graceful degradation.

Что проверяет интервьюер

  • Понимание основ JSON и HTTP-протокола.
  • Умение диагностировать проблемы на стыке фронтенда и бэкенда.
  • Опыт работы с REST API и обработкой ошибок.
  • Способность структурировать ответ: от симптома к причине и решению.

Типичные ошибки

  • Путать direction с order или sort (разные названия в разных API).
  • Использовать булевы значения (true/false) вместо строк.
  • Забывать, что JSON чувствителен к регистру ключей.
  • Не проверять, что сервер ожидает параметр в теле POST, а не в query string.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью