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

それを使用して、RESTfulリクエストを適切に作成するにはどうすればよいですか。ここでの問題は、コントローラーのgetRequest()機能を使用すると、最初のフィルターの値も取得することです。つまり、どのフィルターを破棄できるかを知る方法がありません。


要約すると、Zend_Formを適切に使用してRESTfulHTTPリクエストを作成するにはどうすればよいですか

4

1 に答える 1

1

IMO、あなたは存在しない問題を解決しようとしています。あなたはRESTfulコンプライアンスではなく美学に取り組んでいます。

RESTは、リソースを識別する必要があることを通知しますが、リソースリンクは(ある意味で)見栄えがよいということではありません。ただし、検索は一種のフィルターであるため、QueryParamを使用することはまったく問題ありません。

REST内での「検索」という用語の使用は間違っていると思います。検索はリソースではありません(少なくともあなたの場合)。

次のような操作を行って、検索の実装を非表示にする必要があります。

GET /articles?q=foo&filter=1

フィルタ基準を作成する方法は重要ではありません。

または、「検索」をリソースとして定義することもできます(SOは実際にそのIIRCを実行します)。

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

次のような結果になります:

Location: /articles/search/a125f41fbc135d

a125f41fbc135d検索リソースを識別するために使用される検索の識別子はどこにありますか。

于 2012-10-03T09:46:37.417 に答える