RESTful API设计或谓词

问题描述 投票:0回答:2

我正在设计RESTful API,并试图弄清楚在查询资源时如何用OR运算符表示谓词。

例如,如果我有一个属性为Name的资源Foo,那么如何搜索名称匹配“ Name1”或“ Name2”的所有Foo资源?

当它是AND运算符时,这很简单,因为我可以执行以下操作: http : //www.website.com/Foo?Name=Name1&Age=19

我见过的另一种方法是将搜索发布到正文中。

api rest design-patterns restful-url restful-architecture
2个回答
1
投票

您将需要选择自己的方法,但是我可以列举一些看似合乎逻辑的方法(尽管并非没有缺点):

选项1 .:使用| 操作员:

http://www.website.com/Foo?Name=Name1|Name2

选项2:使用修改后的查询参数允许从集合中的值之一(可能的逗号分隔值列表)中进行选择:

http://www.website.com/Foo?Name_in=Name1,Name2

选项3 .:使用类似PHP的表示法提供列表而不是单个字符串:

http://www.website.com/Foo?Name[]=Name1&Name[]=Name2

上面提到的所有选项都具有一个巨大的优势:它们不会干扰其他查询参数。

但是正如我提到的,选择您自己的方法,并在整个API中保持一致。


0
投票

解决此问题的一种快速方法是添加一个附加参数,以识别参数之间的关系,例如它们是and和or或or:

http://www.website.com/Foo?Name=Name1&Age=19&or=true

或者对于更复杂的查询,只需保留一个参数,并通过使用自己的少量查询语言就可以包含整个查询,在服务器端,您可以解析整个字符串并提取信息和语句。

© www.soinside.com 2019 - 2024. All rights reserved.