私は特定のデータ・セットの階層であるURI構造を有する:コレクションとシングルトンリソースを区別するための好ましいRestful URIの設計は何ですか?
/Blackboard/Requirement/{reqID}/Risk/{riskId}/MitigationPlan/{planId}
URLは、様々なIDがで分割されている場合は、その特定のリソースなどを取得することができます。
GET: /Blackboard/Requirement/2/Risk/2
これはリスク#を取得2が要求#2に関連付けられている
問題はこれです:所望の機能が、同じHTTP要求内の要件のセットを更新(PUT)および削除(DELETE)できるようになりました。 (/Blackboard
URLにHTTP GETを送信すると、設定の全体が取得できます。比喩的に何かが黒板に書き込まれているため、デフォルトの機能です)
新しいコレクションリソースのURLを作成する必要がありますのみサポートPUT/DELETEのように:
/Blackboard/Requirements : HTTP PUT/DELETE
(複数の点に注意してください)
または実際
/Blackboard/Requirements/{reqID}/Risk/{riskId}/MitigationPlan/{planId}
既存のURL構造を複数作ります
後者は、階層内の他の項目が特異であるため、意味の一貫性を壊すようです。私もそれらを複数にする必要がありますか?
アイテムIDを持つと、Blackboard/Requirements/1
のように特異点が明確になりますか(つまり、GETはidなしで許可されていないため、別のリソース(つまりコレクション)を公開することが望ましいですか?それは単数形か複数形か)?
明快でクリーンなデザインのために、アプローチが一般的に選択されているコミュニティの意見を知りたかっただけです(またはそれを行う正しい方法です)。
公正なポイント。問題を抱えて眠った後、_pluralization_が行く方法です。'/ Blackboard/Requirements/1/Risks'は、要件#1に関連するすべてのリスクを返すなど、コレクションリソースに戻す最もクリーンな方法を提供し、URIのすべての部分が使用可能になります。それは 'クール'も維持します;)私を混乱させる唯一のことは '/ Blackboard/Requirements'とGETの'/Blackboard'との違いはどうですか? '/ Blackboard 'を持つ理由は、複数の黒板が存在し、別の黒板の' data 'を取り出すことができるということです。これは、要求の集まりです – PhD
...それでは、上の2つのレベル。構造体は実際には '/ ProjectName/BlackboardName/Requirements ...'ですので、 '/ Blackboard'にはどのようなGETデータが表示されますか? '/ Blackboard/Requirements'と違うはずですか? – PhD
私が間違っていると私を訂正してください。しかし、私は '黒板 'は'/Foo/BarBlackboard/Requirements/1'のようにURLのユーザ定義の部分だと言っていると思います。その場合、要件は本当にBarBlackboardの一部なので、 '/ Foo/BarBlackboard'と'/Foo/BarBlackboard/Requirements'の表現が異なります。 BarBlackboardの可能な表現の1つは、 '/ Foo/BarBlackboard/Requirements'へのリンクのように、BarBlackboardのさまざまな側面へのリンク/ URLのリストです。クライアントは次のパスを知ることができます。 (コメントが多い、必要に応じて回答に追加することができます)。 –