Jocontacter
Новичок
Здравствуйте. Вопрос по архитектурному слою:
У меня имеется frontend и backend на разных серверах. backend при запросе валидирует данные, обращается к бд, файлам и т.д.
Итого может быть 4 варианта развития событий:
1) backend может вообще ничего не ответить, т.к. сервер его содержащий упал.
2) в backend может возникнуть исключение или варнинг(я их отлавливаю вместе - сделал обертку старой php'шной ошибки, наследованной от Exception и делаю throw) - нужно дать об этом знать frontend'у, чтобы извиниться перед юзером.
3) может быть облом при валидации данных/проверке авторизации - в данном случае так-же надо объяснить пользователю в чем он не прав.
4) все хорошо и возвращается ответ.
Пункты 1 и 4 можно пропустить, вопрос по 3 и 4:
Как различать эти типы ошибок? Запросы на backend идут через одно единственное место и я там могу отлавливать ошибки из второго типа и сразу перенаправлять юзера на страницу с извинениями/объяснениями, а как быть с ошибками из третьего пункта? ведь нужно подсвечивать поля с неверно введенными данными..
Вот мои классы:
Класс backend - ответа, который может содержать либо ошибку BackendError либо что-либо другое, и тогда ok===true:
Ошибка:
Как логичнее организовать данные и как обрабатывать эти виды ошибок на frontend'е правильнее?
У меня имеется frontend и backend на разных серверах. backend при запросе валидирует данные, обращается к бд, файлам и т.д.
Итого может быть 4 варианта развития событий:
1) backend может вообще ничего не ответить, т.к. сервер его содержащий упал.
2) в backend может возникнуть исключение или варнинг(я их отлавливаю вместе - сделал обертку старой php'шной ошибки, наследованной от Exception и делаю throw) - нужно дать об этом знать frontend'у, чтобы извиниться перед юзером.
3) может быть облом при валидации данных/проверке авторизации - в данном случае так-же надо объяснить пользователю в чем он не прав.
4) все хорошо и возвращается ответ.
Пункты 1 и 4 можно пропустить, вопрос по 3 и 4:
Как различать эти типы ошибок? Запросы на backend идут через одно единственное место и я там могу отлавливать ошибки из второго типа и сразу перенаправлять юзера на страницу с извинениями/объяснениями, а как быть с ошибками из третьего пункта? ведь нужно подсвечивать поля с неверно введенными данными..
Вот мои классы:
Класс backend - ответа, который может содержать либо ошибку BackendError либо что-либо другое, и тогда ok===true:
PHP:
class BackendResult
{
private $result = null;
private $ok = false;
private $error = null;
public function __construct(& $result = null)
{
if(!is_null($result))
{
if(is_a($result, "BackendError"))
$this->error = $result;
else
{
$this->ok = true;
$this->result = $result;
}
}
}
public function setResult(& $result)
{
$this->result = $result;
}
public function & getResult()
{
return $this->result;
}
public function setError(BackendError & $error)
{
$this->error = $error;
}
public function & getError()
{
return $this->error;
}
public function setOk($ok)
{
$this->ok = $ok;
}
public function getOk()
{
return $this->ok;
}
}
PHP:
class BackendError
{
private $errno = null;
private $error = null;
private $msg = null;
public function __construct($errno = 0, $error = '', $msg = '')
{
$this->errno = $errno;
$this->error = $error;
$this->msg = $msg;
}
public function getErrNo()
{
return $this->errno;
}
public function getError()
{
return $this->error;
}
public function getMsg()
{
return $this->msg;
}
}