代码之家  ›  专栏  ›  技术社区  ›  LiorH

RESTful URL设计-如何使用或在参数之间查询

  •  10
  • LiorH  · 技术社区  · 16 年前

    如何设计一个RESTful查询来支持参数之间的操作数或操作数。 假设我的资源有两个字段field1&field2。如何设计URL以启用以下查询:

    “获取myResources,其中field1=x或field2=y”

    在REST中设计查询是非常直接的,但我只看到了支持查询字段以及查询字段之间的查询。例如/myresource?字段1=x&field2=y

    一个可能的解决方案是提供一个带有自由文本的查询参数,例如:

    获取/我的资源?Q=field1=x或field2=y_

    但这会使客户机解析、扩展或减少筛选字段变得更加复杂。

    你有什么建议?

    3 回复  |  直到 16 年前
        1
  •  10
  •   annakata    16 年前

    查询参数并不是根据定义和相关联的,它们只是惰性参数——如何处理它们取决于您自己。对于或搜索,我建议:

    GET /myresources?field1=x&field2=y&inclusive=true
    

    如果

        2
  •  2
  •   aleemb    15 年前

    因此,请使用以下格式查找带有多个标签的问题:

    http://stackoverflow.com/questions/tagged?tagnames=jquery or css or asp.net or php or web-development or svn

    把它们分开是完全合理的 , ; 假设这些字符对于标记本身不是有效字符。搜索引擎通常使用 q=keyword1+keyword2 和URL编码任何 + 在关键字本身,这是我建议你做的,如果这是一个搜索URI。

        3
  •  1
  •   opensas    15 年前

    它取决于

    如果你想让你的资源通过条件1或条件2被访问,你可以这样对待它们…

    但是,如果您想要同时拥有两种可能性(使用和或),您就必须实现类似annakata所说的,一个参数指示应该如何将条件添加到que查询中…

    如果您想要更灵活的方法(cond1和cond2或cond3),我看到除了用自由文本实现您自己的查询之外没有其他选择,如您所说……

    另一方面,如果您总是在查询同一个字段(我认为情况并非如此,因为您指定了field1、field2),您可以使用allemb的方法,并且只使用一些字符(“,”或“;”)来分隔值…

    就我个人而言,我开发了一些微查询语言,比如

    field1=val1..val2(val1和val2之间的field1) field1=>值2(field1>值2) field1=val1;val2(field1=val1或field1=val2) 文件1= Val1 (字段1包含VAL1)

    field1=val1..val2>val3(field1介于val1和val2之间,field1>val3…

    好吧,你明白了

    但是我把所有的条件都与和结合起来,所以这只是一个扩展的例子,华特阿莱姆说…