2016-12-06 6 views
1

エンティティごとに1つのREST APIエンドポイントが必要ですか? たとえば、従業員がおり、彼はオフィスアドレス、個人アドレス、その他の住所を持っています。消費者が従業員の詳細を要求すると、 "firstName、lastNameおよびIDのID"を返すだけで、消費者はアドレスオブジェクトの別のクエリを起動します。どのようにしてどのようなアプローチを選択するのか、そのような決定をするのに役立つガイドラインは何ですか。REST APIエンティティごとのデザイン

+0

あなたの要件は何ですか?期待される結果は何か。これらを最初に決めてください。その後、予想されるパフォーマンス(SLA、使用可能性)に移行します。それから決定してください。 – k1133

答えて

0

エンティティごとに1つのREST APIエンドポイントが必要ですか?

世界には普遍的なルールはありません。プログラミングは科学の半分にすぎません。それはもう半分の芸術です。あなたは何を選ぶかを決めます。そしてあなたの文脈を知らないと、あなたに助言することはできません。

たとえば、私たちは従業員がおり、彼はオフィスアドレス、個人 アドレス、その他のアドレスを持っています。消費者が従業員 の詳細を要求したときには、「アドレスのfirstName、lastNameおよびID」を返すだけで、 と消費者はアドレスオブジェクトの別のクエリを起動します。どのように我々は を選択し、そのような決定をするのに役立つガイドラインは何ですか?

Facebook Graph APIの実装方法を見てみましょう。つまり、結果に含める必要があるフィールド/依存オブジェクトのリストを表すクエリパラメータを使用するだけです。

0

エンティティごとに1つのREST APIエンドポイントが必要ですか?

"RESTfulインターフェイスには、通常、コアドメインモデルにドメインオブジェクトを持たせるよりもはるかに多くのリソースがあります。" - Jim Webber(2011)

消費者が従業員の詳細を要求したときは、「firstName、lastNameおよびIDのID」を返すだけで、消費者はアドレスオブジェクトの別のクエリを開始しますか?どのようにしてどのようなアプローチを選択するのか、そのような決定をするのに役立つガイドラインは何ですか。

ウェブがどのように機能するのかを覚えておくと便利です。ハイパーメディアは、内、又は上記層、情報のプレゼンテーションとして組み込みアプリケーション制御情報の存在によって定義される

:守備は、ウェブ・アーキテクチャはchapter 4 of his thesisに解決するように設計された多くの問題を記載しています。分散ハイパーメディアにより、プレゼンテーションおよび制御情報を遠隔地に格納することができます。その性質上、分散型ハイパーメディアシステム内のユーザアクションは、データが格納されている場所から使用されている場所に大量のデータを転送する必要があります。したがって、大規模なデータ転送用にWebアーキテクチャーを設計する必要があります。言い換えれば

あなたがウェブスケールで動作しようとしている場合は、キャッシングは、重大な関心事です。

従業員の詳細が安定している場合、それらのすべてを1つの長寿命のドキュメントに投げることは素晴らしいことです。そのドキュメントは長い間、多くのリクエストを処理できます。一方、ドキュメントのキャッシュされたコピーから作業しているクライアントは、最新の変更を認識しません。通常、揮発性データは安定したデータとは異なるキャッシングルールを持つことを望みます。

細粒度のリソースは編集が容易な傾向があります.HTTPでは、リソースの状態がPUTに置き換えられます。リソースが小さくなると、クライアントが追跡するデータが少なくなり、他の編集との衝突の可能性が少なくなります。

関連する問題