2009-05-12 17 views
1

リソース指向のRESTfulサービスを定義するときは、データを照会するための明示的な操作(動詞)を定義することをお勧めしますか?データを照会するためのRESTfulなサービス操作

GET、などPUTなどの操作にHTTPを使用してRESTfulなサービスを向いたリソース上でCRUD操作をマップするために明白かつ簡単に思えるPOST &がDELETEが、どのように操作が複数のリソースのためにそのクエリをマッピングする必要があります - 'と呼ばれる新しい操作を使用してQUERY 'を使用するか、リソースのコレクションを返す' GET 'を使用します。

私はまだGETを使用して、URLのクエリのパラメータを提供するだろう...

答えて

7

RESTはリソースです。クエリのリソースは?データのセット?そのセットはどのようにして識別されますか?それはどのようにパラメータ化されていますか?これは、あなたがGET操作で使用するURLを決定する必要があります

GET /customers would retrieve all customers 
GET /customers?q=<query> would retrieve all customers matching the query 

EDIT:どのリソースの取得についてあるとしてクエリを考える

私にはそれほど明確ではない、次の(たとえば)一連の顧客である場合、私はすべての顧客の中で明確に定義されたサブセットについて不思議に思っていました。

GET /customers/state/MA    Retrieve all customers in Massachusetts 
GET /customers/country/UK   All in the UK 
GET /customers/country/UK/postalcode/001-234 All in that postal code in the UK 

これらのリソースは、明確なリソースとして明確に識別され、クエリではありません。私は引き続きクエリ文字列を使用して任意の顧客セットを取得しますが、顧客の自然なパーティションがある場合は、URLスペースにその文字列を示すことができます。

GET操作は、冪等の操作のためのものであり、キャッシュを促進することを思い出してください。これらのクエリへの応答は、ある程度合理的なキャッシングを可能にするはずです(おそらく1日)。これにより、クライアント・マシンまたはプロキシ・サーバーは、結果セットを一定期間キャッシュして、サーバーのラウンドトリップを節約できます。

+0

これはリソースのクエリについての考え方のようです。 – AwkwardCoder

+1

それがうまくいかないかどうかをお知らせください。私はRESTのファンではありませんが、 "REST"の "R"を "リソース"と考えることは、それが私にとって意味をなさない唯一の方法です。 –

+0

あなたはより多くのSOAPスタイルのサービスを好んでいますか? – AwkwardCoder

0

人の意見や経験に興味があります。

0

応答として関連リソースURIのリストを返します。

関連する問題