我正在构建一个RESTful API,需要对其大量资源进行高级过滤。我需要支持几乎所有你在SQL where子句中可以做的事情。其他人如何在他们的API中实现此功能?
我做的研究越多,看起来我需要找到一个已经定义的语法(如SQL或RQL)的解析器,或者编写我自己的解析器,这是非常简单的。我在Python工作。
答案 0 :(得分:3)
您正在寻找的是OData标准。 OData是一个REST + ATOM组合,包含一个URL内查询语言。
以下是Web服务上OData查询调用的示例:
http://services.odata.org/OData.svc/Category(1)/Products?$top=25&$orderby=name
此(虚构)查询在OData.svc网络服务中搜索按名称排序的类别1中的前25个产品。
有关OData的更多信息,请查看http://www.odata.org/。
有Python的实现可用,但我不确定它们在这个阶段有多先进。查看http://code.google.com/p/odata-py和https://bitbucket.org/dowski/myohdata/src。