在RESTful服务中实现复杂搜索

时间:2013-02-07 13:01:48

标签: api rest coldfusion

我们正在尝试使用coldfusion 10在Rest服务中实现复杂的搜索功能。 像projectid = 1和active = 1和(ManagerName包含John或ManagerName包含alfred)

这样做的一种方法是?projectid = 1& active = 1& ManagerName = [John,Alfred]。但是,这不符合我的目的,因为ManagerName搜索不会返回所需的结果。此外,随着搜索过滤器数量的增加,查询字符串变得难以处理。

我尝试通过HTTP Get Request获取xml(带有所有搜索过滤器)作为输入,但这没有帮助,因为GetHTTPRequestData()不反映xml内容。

有没有办法通过HTTP Get Request传递xml / json? 如果xml是通过HTTP Post Request传递的,那么这是不好的做法吗? 是否有任何其他选项可以将复杂的过滤器参数传递给REST服务?

我在网站上经历了很多关于类似问题的帖子,但仍无法找到解决我问题的方法。

1 个答案:

答案 0 :(得分:3)

GET应该是幂等的,它不应该修改资源的状态。严格限制get使用至Read操作

你的POST触发资源创建,即有效负载(xml / json)。使用POST进行搜索是非常糟糕的做法。

此外,您应该关注Cache-Control,因为您的GET请求可能会被缓存,如果您的搜索是实时的,则可能会收到过时的数据。

您可以将示例视为stackoverflow本身

  

https://stackoverflow.com/questions/tagged/rest?sort=newest&pagesize=30

在上面的URl中,路径元素questionstaggedrest派生question资源的子集。 查询参数建议过滤那些符合creiteria的那些。