Как обрабатывать проверку ресурсов в веб-сервисах REST?

m создание веб-службы REST на Java с использованием Spring, Jersey и Hibernate (JPA).

Сейчас я'Я пытаюсь добавить поддержку проверки в моих ресурсах. JSR-303 (Bean validation) естественно появился как подходящий выбор (I 'используя Hibernate Validator, который является эталонной реализацией JSR-303). Однако я'Я пытаюсь объединить некоторые концепции в первую очередь.

Мне кажется, что есть как минимум два вида возможных проверок:

Регулярная проверка на поляхнапример, проверить, что свойство нет, проверьте, еслиString свойство является действительным адресом электронной почты, проверьте, еслиInteger свойство больше чем10и т. д. Это работает, как ожидалось. Я'Мы зарегистрировали JAX-RS ExceptionMapper, который отображаетjavax.validation.ConstraintViolationExceptionв правильные ответы HTTP.Проверка целостности данных I '

объясню, что именно я имею в виду под "Проверка целостности данных " с примером. Это происходит, когда есть отношения между двумя или более ресурсами. Представьте себе два ресурса:Product иCategory,Product имеетCategory, Когда клиент отправляет на сервер представлениеProduct чтобы создать (запрос POST HTTP), он должен сообщитьCategory продукта. Конечно, клиент должен знать категории заранее. Вообразите в JSON что-то вроде:

{
   "quantity": "10",
   "state": "PRODUCED",
   "category": {
      "id": "123"
   }
}

Ну, категория с идентификатором123 может не существовать Если мы попытаемся вставить это в базу данных, очевидно, мы получим исключение, связанное с внешним ключом. Поэтому я предполагаю, что мы должны проверить эти проблемы и вернуть правильное сообщение клиенту, как при обычной проверке свойств.

Теперь мои основные вопросы:

Прямо сейчас яm выполняет проверку на уровне доступа к данным через JPA 'Интеграция с Валидацией Бина. Должны ли быть сделаны проверкидо / после сериализации процессов,до / после операций с базой данных или жеи то и другое?Как обращатьсяПроверка целостности данных? Вручную? (то есть, явно консультируясь с базой данных, проверяя целостность данных) Или мы должны просто попытаться вставить ее в любом случае и затем перехватить исключения базы данных (или DAO)? Bean Validation не имеет ничего общего с такой проверкой, верно?Если у вас есть опыт работы с JAX-RS / REST и Bean Validation, я был бы рад, если бы вы сообщили мне об этом. Используя группы?

Эти вопросы в некоторой степени связаны с Java, но я также надеялся получить новые взгляды на эти вопросы. Некоторые технологически независимые. :) Было бы здорово, если бы вы могли предоставить свои собственные решения этих проблем на своих веб-сервисах REST.

Ответы на вопрос(4)

Ваш ответ на вопрос