gpt4 book ai didi

rest - RESTful 过滤和查询中的 bool 逻辑

转载 作者:行者123 更新时间:2023-12-04 04:17:05 24 4
gpt4 key购买 nike

这是对 someone else's question 的跟进。关于过滤/查询汽车列表。 RESTful 过滤请求的建议是将过滤器表达式放在 URI 的查询中,如下所示:

/cars?color=blue&type=sedan&doors=4

没关系。但是如果我的过滤查询变得更加复杂并且我需要使用 bool 运算符怎么办,例如:
((color=blue OR type=sedan) AND doors=4) OR color=red

也就是说,我想找一辆四门的蓝色车或一辆四门轿车,但如果这辆车是红色的,我会选择它而不关心任何其他属性。

在 RESTful URI 的查询参数中提供 bool 表达式是否有任何约定?我想我可以通过创建一些新的查询表达式语言并将其放入 POST ,但这似乎是一种沉重且专有的方法。其他人是如何解决这个问题的?

最佳答案

完全可以使用

/cars/color:blue/type:sedan/doors:4

代替
/cars?color=blue&type=sedan&doors=4

URL 标准只说路径应该包含层次结构部分,而查询应该包含非层次结构部分。由于这是一个 map-reduce,使用/是完全有效的。

在您的情况下,您需要一种查询语言来描述您的过滤器。如果我是你,我会复制一个已经存在的解决方案,例如具有 REST API 的 noSQL 数据库的查询语言。
  • 我想 resource query language是你所需要的。我想你可以这样使用它:
    /sthg?q="(foo=3|foo=bar)&price=lt=10"

    或者忘记默认的 queryString 解析器,像这样:
    /sthg?(foo=3|foo=bar)&price=lt=10

    我建议您阅读手册以获取更多详细信息。
  • 由于我没有发现其他与 URL 兼容的查询语言(还),我认为序列化另一种查询语言并将其发送到参数中的唯一其他选项,如 SparSQL
    http://localhost:8003/v1/graphs/sparql?query=your-urlencoded-query

    来自 marklogic7 . Hydra 定义了一个 freeTextQuery在其词汇中,因此它们遵循相同的方法。但我会问马库斯这个。这是一个复杂的主题,因为根据自描述消息约束,您应该在某个地方描述您在 URL 中使用的查询语言类型。我不确定这一点。 :S

  • 结论:

    为了支持即席搜索查询,我们需要一种标准方式来在链接元数据中描述它们。目前关于这方面的标准很少。使用最广泛的标准是 URI templates据我所知,它不支持嵌套语句、运算符等。有个草稿叫 link descriptions它试图填补空白,但它是不完整的。

    一种可能的解决方法是使用单个 q 参数定义 URI 模板,该参数具有 x:SearchQuery 的 rdf:type 和 xsd:string 的 rdfs:range,并创建另一个关于如何描述此类 x:SearchQuery 的词汇。之后,描述可用于构建搜索表单,并验证发送到服务器的查询。这种方法也可以支持现有的查询,因此我们不需要新的查询。

    所以这个问题可以通过词汇或新的 URI 模板标准来解决。

    关于rest - RESTful 过滤和查询中的 bool 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749060/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com