Обработка пропущенных свойств в ответах API - PullRequest
0 голосов
/ 23 февраля 2019

Как мне обработать отсутствующие свойства в ответе API от бэкэнда?

У меня есть приложение React, и я получаю некоторые данные из бэкэнда.Затем я использую эти данные для визуализации некоторых элементов, а также для обработки некоторых действий на основе значений в этом ответе.Но может случиться так, что некоторые значения отсутствуют.Тогда я должен всегда проверять ответы API таким образом, чтобы он присваивал значения по умолчанию отсутствующим свойствам, таким как:

import { get } from 'lodash'


const { data } = await axios.get(...);

const dataForFrontend = {
  id: get(data, 'id', 'N/A'),
  name: get(data, 'name', 'N/A'),
  lastName: get(data, 'lastName', 'N/A'),
  email: {
    address: get(data, 'email.address', 'N/A'),
    active: get(data, 'email.active', false),
  }
}

(если у data не было поля email, и я использовал его сразу же, тогда открытое приложениескорее всего, разрыв с «не может прочитать свойство address из неопределенного».)

... или, может быть, я должен просто использовать data сразу и предположить, что это действительно так, в противном случае это означало бы, что бэкэнд был сломан и путем назначениязначения по умолчанию. Я просто скрыл проблему (я имею в виду, что позже возникнет какая-то другая ошибка при попытке, например, умножить 100 на N/A)?

Я хотел бы знать правильный подход кэто - подтвердить или предположить, что оно должно быть действительным?

1 Ответ

0 голосов
/ 23 февраля 2019

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

Я согласен, что было бы плохой идеей возвращать N/A, если ваше внешнее приложение может попытаться умножить эту строку на 100.

Большинство работает, лучший пользовательопыт

Похоже, у вас есть другие законные записи в вашей базе данных или API, которые могут иметь недостающие свойства.В этом случае вам, вероятно, лучше всего следовать политике «постепенного ухудшения», когда ваша логика внешнего интерфейса готова справиться с отсутствующими свойствами, возможно, требуя, чтобы эти отсутствующие свойства были заполнены до выполнения какой-либо дальнейшей работы сэта запись.

Меньше работы, все еще сообщая о проблеме пользователю

Следующим лучшим вариантом, вероятно, будет немедленная проверка входящих данных и отклонение запроса с помощьювыдается ошибка, которая представляется пользователю с полезной информацией.

Наихудший способ

Из всех этих трех вариантов обработка неполной записи представляется наихудшим вариантом.

...