过滤RESTful Web服务中的资源集合

时间:2012-05-09 21:03:56

标签: java web-services hibernate rest spring-mvc

我在使用Spring MVC和Hibernate的应用程序上工作。我正在实现一些RESTful Web服务,并且很好奇如何轻松过滤服务器端的集合。

作为一个例子,我希望能够过滤员工实体的集合。我研究了几个选项,例如RQLGoogle处理自定义搜索的方式,Ebay's回答,甚至雅虎YQL。它们似乎都是过滤问题的好答案,但我似乎找不到任何可以让我轻松实现这个概念的库。

我确实找到here,即:

  

自从2.3.0发布以来,Apache CXF通过其JAX-RS实现引入了FIQL支持

但我们已经在使用Spring MVC。

我很惊讶没有用于获取下面的粗体查询字符串的库,例如,将其转换为SQL或Hibernate可用于过滤的内容。

  

/ employees? lastname = john OR jon& hiredate lt 20010201

我完全有可能错误地想到这一点,但我想深入了解社区的经验和知识。我错过了什么?

2 个答案:

答案 0 :(得分:1)

我知道这是旧的,但为了完整起见,至少有两个库处理解析RQL:

我自己使用jazdw / rql-parser并开始使用SQL映射器,但正如Oleksi所说,验证,字段映射等需要很多自定义代码,所以我不知道我是如何通用的。

答案 1 :(得分:0)

直接将GET转换为SQL的库可能非常不安全。您需要有一个中间层来进行一些验证,以确保用户没有弄乱URL来执行SQL注入。

据我所知,您可以做的最好的事情就是使用JAX-RS实现来干净地读取这些查询参数,验证它们,并使用类似准备好的SQL语句来安全地执行它们。