Я пишу веб-сервис.В каком слое должна выполняться проверка?
Обычно ввод будет XML-документом и выходным XML или JSON.
Приложения использует скороговорку MVC, имеющей различные слои
- Контроллеры: Получение XML и предоставляют ответ (XML/JSON)
- Услуги: Бизнес-логику, операции
- DAO: Запрос источника данных (база данных или, возможно, другая веб-служба)
Мое понимание заключается в том, что базовая проверка (то есть: XML против XSD) должна выполняться как можно скорее на уровне контроллера.
После этого мне еще нужно выполнить дополнительные проверки, некоторые из таких проверок являются основными, например
- Формат даты должен быть правильным
- Имя пользователя не может превышать X символов (возможно также быть выполнены на XSD?)
Насколько я понимаю, такие базовые проверки должны были быть выполнены при развязывании XML в объект Java. Это также случились в слое контроллера (хотя сама проверка будет сделана объектом Java, где XML является unmarshalled в)
И, наконец, я сталкиваюсь с более «сложными» Validations примеров
- дата не должна быть до 1950 (просто случайный пример)
- Если значение А больше, чем в, то величина с не должна превышать D
такой «комплекс» valiations, кажется, за fect кандидат для интерфейса javax.validation.Validator. И также чувствует, что они должны выполняться на уровне контроллера.
Вопросы
- Является ли это правильный подход? Должен ли я также проверять что-то на других уровнях?
- Я добавляю слишком много логики в контроллеры? Должен ли я переносить некоторую проверку на уровень службы, где существует бизнес-логика?
Для меня ваша так называемая «сложная» проверка звучит скорее как необходимость бизнеса и как таковая должна быть поставлена на уровень бизнес-логики. – mawia
@mawia Хорошая точка, и, слава богу, я процитировал слово «сложный» :) –