Как с бэкенда ловить ошибки на фронтенде?

Суть вопроса вот в чем:
есть на бэкенде список ошибок, например такие:
res.status(400).send({ message: 'Incorrectly ID' });
res.status(400).send({ message: 'Incorrectly Email' });

Если на фронтенде от править запрос с неверными полями, то приходит ответ 400 (Bad Request), а не с ошибками из бэкенда. Как брать ошибки с бэкенда и если их нельзя от туда брать, то зачем их вообще там пишем?
  • Вопрос задан
  • 2790 просмотров
Решения вопроса 1
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
Нужно обработать ответ сервера. Проверить его status или statusCode.

Как пример:
fetch('http://localhost:3001/register', {
    method: 'post',
    body: data
 })
 .then(response => {
     if (!response.ok) {
         throw new Error('my api returned an error')
     }
     return response.json()
 })
 .then(user => {

      console.log(user)
  })


https://developer.mozilla.org/en-US/docs/Web/API/R...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@twolegs
Ошибка должна быть в теле запроса.
Обработка ошибок на клиенте зависит от того, каким образом вы отправляете запросы (fetch, axios и т.п.).
Как правило, тело ошибочного ответа можно получить в catch у промиса.

Если это фетч, то ошибочный респонз надо предварительно распарсить (response.json() или response.text()). Кроме того, по умолчанию фетч не реджектит промис, если ответ пришел не со статусом 200, так что это тоже надо обработать
if (response.status >= 200 && response.status < 300) {
    return Promise.resolve(response);
  } else {
     return Promise.reject(response.json())
  }
Ответ написан
Комментировать
@Karpion
  1. Поставьте на фронте проверку корректности полей. Лучше не доводить до ошибки вообще.
  2. Я не понял, кто на бэке определяет ошибку. И что вообще за ошибка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы