小编Nat*_*ast的帖子

是否有针对JPA,spring-data,spring-data-rest的通用REST查询语言

要求

  • 通用查询语言,可在GET请求中使用以收集REST api中的资源以过滤返回的资源集
  • 通过“标准”查询语言传递并通过HTTP作为请求参数发送的查询-.eg / someresource?query = ......或/ someresource?abc = 2
  • 在服务器上运行时构造的SQL查询
  • 与jpa,spring-data,spring-data-rest紧密集成-代码越少越好。
  • 嵌套资源和属性路径可用于查询
  • 支持复杂的操作数-EQUALS,GREATER_THAN,LESS_THAN,NEGATION,LIKE,AND,OR,或NOT,IN

例如,resourceA.attribute1 =“ CAT” AND resourceA.subResourceB.attribute2> = 42 AND resourceA.attribute3 IN(“ WHIZ”,“ BANG”)

我研究了四种解决方案-每种解决方案都更加接近目标。有没有我找不到的其他解决方案,还是没有这样的完整解决方案-是在下面概述的“基于RSQL的REST查询语言”基础上的答案吗?

1)春季数据剩余查询

Spring数据中有很多支持,可用于在代码中开发复杂的查询,但这要求开发人员事先了解查询的结构,并相应地构造代码。 https://docs.spring.io/spring-data/rest/docs/current/reference/html/#repository-resources.query-method-resource

2)spring-data,spring-data-rest,query-dsl

http://www.baeldung.com/rest-api-search-querydsl-web-in-spring-data-jpa

+ ve非常适合-完全可用的解决方案,开箱即用几乎为零

可以构建+ ve深度嵌套的查询,并且服务器可以动态生成正确的SQL。

-ve唯一的运算符是EQUALS'=',以便应用其他运算符,您需要实现QuerydslBinderCustomizer实例,这再次要求服务器代码提前知道查询的复杂性。

https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/querydsl/binding/QuerydslBinderCustomizer.html

3)Baeldung-“建立休息查询语言”

http://www.baeldung.com/spring-rest-api-query-search-language-tutorial

+ ve-接近通用查询语言

-ve-感觉像是演示/ POC

4)使用RSQL的REST查询语言

http://www.baeldung.com/rest-api-search-language-rsql-fiql

+ ve-感觉更完整的查询语言和相关的解析器

-ve-不确定弹簧集成

spring querydsl spring-data spring-data-rest

10
推荐指数
1
解决办法
1608
查看次数

标签 统计

querydsl ×1

spring ×1

spring-data ×1

spring-data-rest ×1