2

次のユース ケースを REST 形式で照会する独自の方法を探しています。

リポジトリに次のものが含まれていると仮定します:-

a. green color ball image of 1cm radius
b. yellow color ball image of 1cm radius
c. blue color ball image of 1cm radius
d. green color ball image of 2cm radius
e. yellow color ball image of 2cm radius
f. blue color ball image of 2cm radius
g. computer monitor icon image of size 32x32 pixels in png format
h. computer monitor icon image of size 64x64 pixels in png format
i. computer monitor icon image of size 32x32 pixels in ico format
j. computer monitor icon image of size 64x64 pixels in ico format
k. HR travel policy
l. HR new hire policy
g. HR promotion policy

1. Find all documents published after a certain date?
2. Find all documents published before a certain date?
3. Find all documents published between a certain set of dates?
4. Find all balls which are 1cm in radius
5. Find all documents whose download format is "png"
6. Find all documents whose size is 32x32 pixels
7. Find all balls which are green in color.

当社のストレージ リポジトリは、Google Storage、Amazon S3、Mongodb GridFS、Java コンテンツ リポジトリ (JCR 2.0)、または単純なファイル システムに基づくことができます。

上記のデータを保存および取得する理想的な方法は何でしょうか。上記のユース ケース [1-6] のいずれかをモデル化できるように、REST URL をできるだけ表現力豊かにしたいと考えています。上記のクエリに基づいてドキュメントを取得するために適切な命名規則を使用できるように、汎用リポジトリを設計する方法についての指針を感謝します。

4

1 に答える 1

2

ここでは、2 つの懸念事項を分離することをお勧めします。1) ストレージ リポジトリのモデリング。2) RESTful アクセスの設計。開発が始まったばかりのとき、これら 2 つの懸念は常に密接に関連しています。プロジェクトが発展するにつれて、リポジトリの集約ポイントまたは単に異なる視点を設計することが必要になる場合があります。概念が表面上でのみ類似していることを理解することは常に良いことです。

7 つの質問に関する限り、まず「ドキュメント」の概念が「ドキュメント インスタンス」の概念に完全に置き換え可能かどうかを判断する必要があります。たとえば、赤いボールの ID が 1 の場合、次の 2 つのリソースは有効ですか?

/documents/1
/balls/1

次のリソースの両方または 1 つだけに新しいボールを POST できますか?

/documents/
/balls/

1 つまたは複数のリソースですべての緑色のボールを見つけることができますか?

/documents/type/ball/by/color/green
/balls/by/color/green

API が明確になるように、これらの質問に答えることが重要です。

次に、リソースをどのように「SEO フレンドリー」に見せるかを決める必要があります。例えば:

1. /documents/after-date/2001-01-01/
2. /documents/before-date/2010-12-31/
3. /documents/after-date/2001-01-01/before-date/2010-12-31/
7. /balls/by/color/green

or

1. /documents?after-date=2001-01-01
2. /documents?before-date=2010-12-31
3. /documents?after-date=2001-01-01&before-date=2010-12-31
7. /balls?color=green

これは、API が広く公開されており、公開 Web サイトでリンクを促進するために使用されている場合に「問題」となります。私が「SEO フレンドリー」と「懸念」を引用符で囲んだのは、検索エンジンが何らかの方法を好むのか、それともエンジンがまったく気にしないのかについて、SEO の専門家はいまだに意見が一致していないためです。

実装の観点からは、URL パラメーターを使用する方が簡単で、高速で、スケーラブルです。しかし、狂った数の組み合わせが予想されない場合は、両方のアプローチが同じようにうまく機能します。

個人的な経験から、検索タイプのリソース (ID リソースとは対照的に) を共通のパスでグループ化することもお勧めします。例えば:

7. /balls/search?color=green

instead of 

7. /balls?color=green

デザイン頑張ってください。REST に関しては、唯一の正しい方法はありません。それが理にかなっている限り、あなたは良い道を進んでいます。

于 2011-02-04T03:09:25.140 に答える