Отдельно проверять наличие нет смысла. Если уж валидировать, то нормально, каждое поле, на соответствие ожидаемому формату. Ну и заодно и наличие.
А скопом если проверять, то скорее на наличие 
лишних полей. 
Плюс никаких исключений. Странно, что я не обратил на это внимание 
в прошлый раз, там этот говнокод с try catch просто везде. Самому не надоедает всё время писать эти тру,  кетч, ретурн для каждого запроса? И с какой стати пользователь API должен читать, что в БД нету например нужной таблицы? Это ВНУТРЕННЯЯ информация, которая не должна утекать наружу
Как вариант,  метод validate должен возвращать массив с ошибками.
Если массив пустой, то используем данные
Если не пустой - возвращаем их пользователю.