2013-04-12 8 views
7

私は大きなリソース、顧客を扱うREST APIを持っています。顧客は時には顧客の略式/略式表現を望んでいる。要求がサマリー表現のためのものであることを指定する良い方法は何でしょうか? リソースの要約表現をリクエストするREST APIの最良の方法は?

は、顧客123のための完全な表現を取得するには、その:要約表現は /customers/123/summary良い方法です /customers/123

取得するには? 良いオプションはありますか?

答えて

4

ソリューションを再利用可能かつ柔軟にするために、「フィルタ」クエリパラメータを実装することをお勧めします。そこでは、あなたがクライアントに必要なフィールドを置くことができます。

GET /customers/123?fields=id,first_name,last_name,email 

その方法を、後であなたが別のタスクごとに異なる要約を作成する必要がある場合は、変更には何もありません。

フレキシブルではないので、/customers/123/summaryはおすすめしません。 1つのケースでは問題ありませんが、クライアントが別のケースで異なるプロパティにアクセスする必要がある場合は、リソースを調整する必要があります(必要以上のフィールドを返す可能性が高い)。 「DESCRIPTIONは」要約のタイプを記述します

GET /customers/123?view=DESCRIPTION 

:あなたはフィールド名を「非表示」にしたい場合は、おそらく代替は、このようなものである可能性があります。例:

GET /customers/123?view=addresses_only // eg. returns billing and home address 
GET /customers/123?view=short // eg. returns only id, first name, last name 

これは、新しいビューを簡単に作成できるので、柔軟性があります。

+0

提案してくれてありがとう、私はそれがどのように柔軟性があるか見ることができます。私がこのアプローチで懸念しているのは、消費者が顧客リソースの利用可能なフィールドを知っていることを前提としていることです。 – BobJ

+0

どちらの場合でも、/ summaryか/?field = ...でも、クライアントとURLを共有する必要があります。利用可能なフィールドを知っている必要はありません。私は別の可能な解決策で自分の投稿を更新しました。 –

+0

私は?view = short approachのように感謝します。 – BobJ

関連する問題