С точки зрения взаимодействия между субъектами Пользователь – Клиент – Сервер можно выделить такие виды ошибок:
- сбой Клиента;
- результат валидации данных на Клиенте и Сервере;
- результат обработки данных и команд;
- потеря связи с Сервером.
Разберём подробнее, что к чему.
Содержание статьи
Сбой Клиента
Какой бы мы ни получили ответ от Сервера, на Клиенте может произойти сбой отображения контента. Пользователь увидит пустую белую страницу. Как облегчить эту ситуацию, обсудим в следующей части.
Примечательно, что сбой Клиента «перекрывает» остальные ошибки. То есть, даже если Сервер прислал другую ошибку, Пользователь не сможет её увидеть.
Результат валидации данных
Допустим, Пользователь заполнил и отправил форму. Прежде чем передать введённые данные Серверу, нужно проверить, правильно ли они заполнены. Иначе Сервер не сможет их корректно обработать.
Такая проверка происходит на стороне Клиента: допустимые символы, количество символов, наличие обязательных данных.
Если всё в порядке, данные передаются Серверу.
На стороне Сервера часто ещё раз проверяется формат введённых данных. Также проводятся проверки, где надо сравнить введённые данные с теми, что уже существуют в системе. Так что могут обнаружиться новые валидационные ошибки.
Пример
Пользователь регистрируется в системе и создаёт логин. Можно использовать только латинские буквы и цифры, а Пользователь вводит leonid!!!. После валидации на Клиенте отобразится ошибка «Используйте только латинские буквы и цифры».
Пользователь исправляет логин на leonid96. Теперь проверка формата будет пройдена. Только после валидации на Сервере появится ошибка «Пользователь с таким логином уже существует». Потому что для этого нужно было сравнить введённый логин с другими логинами, существующими на сайте.
Ошибки валидации обычно приходят в виде кода состояния 400 BadRequest или 409 Conflict и описания, в чём заключается ошибка.
Результат обработки данных и команд
Может случиться так, что Сервер принял данные, но не смог их обработать. Или есть конфликт между поступающими командами. Или возник сбой при передаче результата от Сервера Клиенту. Какая бы ни была проблема, Сервер отправляет код состояния, который на неё указывает. Даже если он сам «упал» – обязательно об этом сообщит.
Таких ситуаций много – это все коды состояния 4__ и 5__.
Потеря связи с Сервером
Это ситуация, когда от Сервера не пришёл ответ (код состояния) на действия Пользователя. Обычно это значит, что пропал интернет или есть проблемы с VPN. Но может быть и так, что Сервер просто не отвечает.
Хочу ещё раз обратить внимание: «Сервер упал» и «Нет связи с Сервером» – это разные ситуации. В первом случае у Сервера проблемы, но он сообщает об этом кодом состояния. Во втором случае от него вообще нет ответа.