我们正在尝试使用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服务?
我在网站上经历了很多关于类似问题的帖子,但仍无法找到解决我问题的方法。
答案 0 :(得分:3)
GET
应该是幂等的,它不应该修改资源的状态。严格限制get
使用至Read
操作
你的POST
触发资源创建,即有效负载(xml / json)。使用POST进行搜索是非常糟糕的做法。
此外,您应该关注Cache-Control,因为您的GET
请求可能会被缓存,如果您的搜索是实时的,则可能会收到过时的数据。
您可以将示例视为stackoverflow
本身
https://stackoverflow.com/questions/tagged/rest?sort=newest&pagesize=30
在上面的URl中,路径元素questions
,tagged
,rest
派生question
资源的子集。
查询参数建议过滤那些符合creiteria的那些。