首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建RESTful复杂查询的最佳方法是什么?

问创建RESTful复杂查询的最佳方法是什么?
EN

Stack Overflow用户
提问于 2008-12-19 19:35:57
回答 4查看 2.8K关注 0票数 6

从REST服务中检索复杂查询的最佳方法是什么?

假设我想获得X集合,对每个集合应用过滤器和等式,使用其他操作组合集合,并返回一个结果,一个请求中的所有内容。

把所有东西都放在查询字符串中太复杂了(而且太大了),因为我可以组合300多个集合(加上每个集合的操作符和过滤器)。

我考虑使用POST来发送描述查询的XML对象,如下所示:

代码语言:javascript
复制
http://mydomain/collections/complexQuery

它将返回一个唯一的ID,然后我可以使用GET检索complexQuery结果:

代码语言:javascript
复制
http://mydomain/collections/complexQuery/{queryId}

Jason:

这就是我的想法。POST将采用查询的XML表示形式,并使用"where“参数(它们可能太多)。只有当GET到达时,查询才会执行。我可以让查询对象在一段时间内可用,然后再删除它。

这是个好办法吗?我还在做RESTful吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-19 19:50:22

如果您使用的是唯一的ID,听起来很像RESTful。如果查询结果集很大,您可能希望包括一种查询结果集行M的方法,其中M,N是参数。

我想您唯一的ID方法(存储在服务器上的w/ query定义状态)的一个优点是,您可以将查询的结果用作另一个查询的参数。甚至可以将查询的定义与查询的执行分开发布。

票数 2
EN

Stack Overflow用户

发布于 2008-12-19 19:38:14

这是标准的RESTful方法。POST到资源,并期待一个201 Created (没有实体体)与URI到创建的结果在Location头。还可以返回带有200 OK响应的结果,还可以返回指向响应中未来(De)引用的结果的URI以及结果的副本。

票数 2
EN

Stack Overflow用户

发布于 2009-01-17 17:02:55

没问题。但它带来了一些问题:

您必须持久化服务器上的查询数据,什么时候清理旧的查询?如果您清理旧的查询,这意味着您不能提供指向保存的查询的链接,因为它们可能已经被清除了。即使是简单的查询,

  • 也需要两次往返(POST和GET),您的客户端需要熟悉您期望的XML模式,而不是众所周知的:param1=val1&param2=val2

。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/381983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档