Я переопределяю свою систему управления пользователями с помощью Slim, и я пытаюсь выяснить, где Я должен сделать пользовательскую очистку / проверку данных. Я читал о промежуточном программном обеспечении, и мне интересно, является ли это подходящим способом реализации проверки данных.
Мой план проверки состоит в том, чтобы использовать схему проверки (простой файл JSON) для каждого запроса, который содержит некоторые пользовательские данные (то есть формы). Однако разные формы, очевидно, будут использовать разные схемы, и могут быть некоторые типы проверки, которые не могут быть обработаны одной схемой.
Таким образом, любое промежуточное программное обеспечение, которое я реализую, должно будет решить, какую схему использовать в зависимости от маршрута. Кроме того, для некоторых маршрутов потребуется дополнительная логика проверки помимо той, которая представлена в схеме. Для меня это звучит как неправильный подход — разве промежуточное программное обеспечение не должно быть достаточно «общим», выполняя ту же логику при каждом запросе / ответе?
Другой подход заключается в том, чтобы иметь некоторый объект проверки, который я инициализирую на каждом маршруте с соответствующей схемой, а затем внедряю свое приложение Slim.
Какой подход был бы более разумным?
Использование глобального промежуточного программного обеспечения не имеет смысла, так как в итоге вы соединяете список параметров каждой конечной точки вместе.
Два варианта, которые я бы рассмотрел:
Реализовать как маршрут промежуточное программное обеспечение, так что вы можете иметь различные фильтрации / проверки для каждой конечной точки.
например
function fooFilter() {
// filter/validate GET variables here and set back into request.
}
$app->get('/foo', 'fooFilter', function () {
// "controller" logic
});
Преимущество этого состоит в том, что логику контроллера не нужно загромождать проверкой, как это уже было сделано.
Фильтр / проверка в логике контроллера. Основным преимуществом здесь является то, что вы можете легче проводить аудит, если переменная GET используется без предварительной фильтрации / проверки.
Других решений пока нет …