【问题标题】:Filtering Collections of Resources in RESTful Web Services过滤 RESTful Web 服务中的资源集合
【发布时间】:2012-05-18 10:29:51
【问题描述】:

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

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

我确实找到了here,那个:

Apache CXF 自 2.3.0 版本以来通过其 JAX-RS 实现引入了 FIQL 支持

但我们已经在使用 Spring MVC。

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

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

完全有可能我的想法不正确,但我想利用社区的经验和知识。我错过了什么?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我自己使用 jazdw/rql-parser 并开始使用 SQL 映射器,但正如 Oleksi 提到的,验证、字段映射等需要大量自定义代码,所以我不知道我能做到多通用做吧。

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 2018-08-22
        相关资源
        最近更新 更多