使用or条件定义查询参数的RESTful最佳实践是什么?

Vít*_*ins 5 parameters rest

我想知道,遵循RESTful最佳实践,我应该在哪些方面定义如下所示的URL:

/people?q="email=aa@aa.com||phone=11111"
Run Code Online (Sandbox Code Playgroud)

重点是通过电子邮件地址或电话搜索某个人,具体取决于他们在搜索框中插入的内容.

我一直在阅读一些关于使用RESTful服务的最佳实践的指南,但似乎没有人谈论这种情况.

inf*_*rno 3

REST意味着您通过构建(统一)应用程序接口来遵循标准。

目前对于使用 GET 进行一般查询还没有标准的解决方案。您可以使用许多非标准 URL 查询语言。例如RQLOData、大多数数据库 REST API URI 的结构:例如mongodb等...所以尽量不要重新发明轮子。作为替代方案,您可以像在示例中那样在查询参数中发送序列化查询。它可以使用任何标准查询语言,例如SPARQL,如果您将 REST 与RDF词汇(如Hydra )一起使用。如果不这样做,则必须在供应商 MIME 类型的文档中对其进行描述。(一般查询在这种情况下意味着您不知道查询的结构是什么。)

如果您正在寻找非通用查询解决方案,那么您可以使用任何URI 模板,只要您使用 RDF 词汇或在供应商 MIME 类型的文档中以某种方式描述链接的参数即可。如果您不明白我在说什么,请检查统一接口约束/自我描述消息、手册的 HATEOAS 部分使用维基百科。(在此上下文中,非一般查询意味着您了解查询结构,并且可以使用 URI 模板来描述它。)

请注意,您必须解析、验证和授权这些查询,因此发送 SQL 语句并在不进行任何检查的情况下通过数据库运行它可能会对您的应用程序造成致命的影响。