2012-05-09 3 views
1

Я работаю над приложением, использующим Spring MVC и Hibernate. Я реализую некоторые веб-службы RESTful, и мне любопытно, как легко фильтровать коллекцию на стороне сервера.Фильтрация коллекций ресурсов в веб-службах RESTful

В качестве примера я хочу, чтобы иметь возможность фильтровать коллекцию сущностей сотрудников. Я исследовал несколько вариантов, таких как RQL, способ Google обрабатывает пользовательские запросы, Ebay's ответ и даже Yahoo YQL. Все они, кажется, являются хорошими ответами на вопрос фильтрации, но я не могу найти библиотеки, которые позволят мне легко реализовать эту концепцию.

Я нашел here, что:

Apache CXF введена поддержка FIQL с его реализации JAX-RS, так как 2.3.0 выпуска

, но мы уже используем Spring MVC.

Я удивлен, что нет библиотеки для взятия полужирной строки запроса ниже, например, и перевода этого в SQL или того, что Hibernate может использовать для фильтрации.

/сотрудники? = Lastname джон ИЛИ джон & HireDate л 20010201

Вполне возможно, что я имею в виду, это неправильно, но я хотел бы задействовать опыт и знания сообщества. Что мне не хватает?

ответ

0

Библиотека, которая непосредственно преобразует GET, подобную этому, может быть очень небезопасной. Вам нужно иметь промежуточный уровень, чтобы выполнить некоторую проверку, чтобы убедиться, что пользователь не возится с URL-адресом для выполнения SQL-инъекции.

Насколько я знаю, самое лучшее, что вы можете сделать, это использовать вашу реализацию JAX-RS для чистого чтения в этих параметрах запроса, проверки их и использовать что-то вроде подготовленного оператора SQL для безопасного их выполнения.

1

Я знаю, что это старое, но для полноты картины, есть, по крайней мере, две библиотеки, которые обрабатывают разбор RQL:

Я сам использую jazdw/rql-parser и начал работать над SQL-компилятором, но, как сказал Олекси, существует много настраиваемого кода, необходимого для проверки, сопоставления полей и т. Д., Поэтому я не знаю, как я могу сделать общий это еще.

Смежные вопросы