从REST服务中检索复杂查询的最佳方法是什么?
假设我想获得X集合,对每个集合应用过滤器和等式,使用其他操作组合集合,并返回一个结果,一个请求中的所有内容。
把所有东西都放在查询字符串中太复杂了(而且太大了),因为我可以组合300多个集合(加上每个集合的操作符和过滤器)。
我考虑使用POST来发送描述查询的XML对象,如下所示:
http://mydomain/collections/complexQuery它将返回一个唯一的ID,然后我可以使用GET检索complexQuery结果:
http://mydomain/collections/complexQuery/{queryId}Jason:
这就是我的想法。POST将采用查询的XML表示形式,并使用"where“参数(它们可能太多)。只有当GET到达时,查询才会执行。我可以让查询对象在一段时间内可用,然后再删除它。
这是个好办法吗?我还在做RESTful吗?
发布于 2008-12-19 19:50:22
如果您使用的是唯一的ID,听起来很像RESTful。如果查询结果集很大,您可能希望包括一种查询结果集行M的方法,其中M,N是参数。
我想您唯一的ID方法(存储在服务器上的w/ query定义状态)的一个优点是,您可以将查询的结果用作另一个查询的参数。甚至可以将查询的定义与查询的执行分开发布。
发布于 2008-12-19 19:38:14
这是标准的RESTful方法。POST到资源,并期待一个201 Created (没有实体体)与URI到创建的结果在Location头。还可以返回带有200 OK响应的结果,还可以返回指向响应中未来(De)引用的结果的URI以及结果的副本。
发布于 2009-01-17 17:02:55
没问题。但它带来了一些问题:
您必须持久化服务器上的查询数据,什么时候清理旧的查询?如果您清理旧的查询,这意味着您不能提供指向保存的查询的链接,因为它们可能已经被清除了。即使是简单的查询,
param1=val1¶m2=val2。
https://stackoverflow.com/questions/381983
复制相似问题