0

我在 Zend 中实现了一个搜索表单(后端为 SOLR)。为了向用户提供更多控制权,我添加了一个用于应用某些内容过滤器的多选框。

事情在以下步骤中(请耐心等待):

  1. 发出请求,类似于/search/?q=bla&filter=1

  2. 该请求在控制器中被重写,以便于:/search/query/bla/filter/1

  3. 如果用户移除过滤器1,添加过滤器2并提交请求变为:/search/query/bla/filter/1?q=bla&filter=2

我将如何使用它正确地创建一个宁静的请求。这里的问题是使用控制器的 getRequest() 功能我还将获得第一个过滤器的值,这意味着我无法知道我可以丢弃哪个过滤器。


所以,总结一下:如何正确使用 Zend_Form 创建 RESTful HTTP 请求

4

1 回答 1

1

IMO,您正在尝试解决一个不存在的问题。您正在研究美学而不是 RESTful 合规性。

REST 告诉您需要识别资源,而不是您的资源链接应该看起来不错(在某种程度上)。但是由于您的搜索是一种过滤器,因此使用 QueryParam 是完全可以接受的。

我认为,您在 REST 中使用“搜索”一词是错误的。搜索不是资源(至少在您的情况下)。

您应该通过执行以下操作来隐藏搜索实现:

GET /articles?q=foo&filter=1

您构建过滤器标准的方式应该无关紧要。

或者您可能想将“搜索”定义为资源(​​实际上是 IIRC)。

POST /articles/search/
"{
  "query" : "foo",
  "filter" : "bar"
}"

会导致类似:

Location: /articles/search/a125f41fbc135d

a125f41fbc135d用于识别搜索资源的搜索标识符在哪里。

于 2012-10-03T09:46:37.417 回答