2017-01-25 11 views
0

私は、サーバーからエンティティの計算を要求するときに使用する正しい規則に興味があります。つまり、特定のエンティティが関与していますが、そのデータは返されません。代わりに、エンティティに基づく計算が返されます。RESTリソースの計算ビューを取得

たとえば、オフセット/タイムゾーン値が異なる複数のクロックを格納するサイトを想定します。このサイトの目的は、適切な方向を指す手でアナログ時計の画像を表示することです。

POST /clocks 
{ 
    "offsetHours": 5 
} 

そして、私はこの応答を受け取るだろう:私はこれを行うことができると期待する良い規則を使用して

201 (Created) 
{ 
    "id": "fe884d5e", 
    "offsetHours": 5 
} 

今、私はそのクロックオブジェクトを取得することができることを期待します:

GET /clocks/fe884d5e 

応答する:

200 (OK) 
{ 
    "id": "fe884d5e", 
    "offsetHours": 5 
} 

これまでのところこれはすべて問題ありません。しかし、私がアクセスすると期待している他の2つのエンドポイントがあります。最初のものは、時計のオフセットに対して計算された現在の時刻を返します。 2つめは時計の現在時刻に基づいてアナログ時計を表示する画像データを返します。

私の質問は次のとおりです。これらのデータ項目のGETリクエストはどのようなものになりますか?または、エンティティの計算されたビューを扱う場合、コンベンションは緩やかですか?

答えて

0

しかし、私がアクセスを期待している他の2つのエンドポイントがあります。最初のものは、時計のオフセットに対して計算された現在の時刻を返します。

第1クロックの現在の時刻に基づいて、アナログ時計を表示する画像データを返す

GET /clocks/fe884d53/localTime 

ような何か。

ここで重要な考え方は、クロック自体の記述があることを正確に同じように、これらは情報資源であるということです

GET /clocks/fe884d5e/localTime/analogClock.jpg 

または

GET /clocks/fe884d5e/analogClock.jpg 

ような何か情報資源。

消費者の観点から見ると、表現は単なる文書に過ぎません。ドキュメントが新しく生成されたのか、ドキュメントストアからコピーされたのか、Webキャッシュから取り出されたのかを知る方法はないはずです。

計算があるという事実は、APIの後ろに隠れている実装に過ぎません。

これは、実装の詳細を共有する異なるリソースであるという考えを明確にした後、残りの作業は自転車だけのものです(ルーティングが適切な実装を見つけるのは簡単でしょうか?パスセグメント、およびクエリの非階層部分は、スペルが、私たちのローカルコーディング標準などに適合する「リソース」のように見えます)。

+0

私の質問は、クライアントがいくつかのビューが計算され、他のビューは計算されていないことを認識しなければならないかどうかと本当に関係していたと思います。 –

関連する問題