3

RESTful パラダイム + ネストされた URL には本当に苦労しています。私が今ここにいる場所に私を導く質問をしました。私のドメインは大まかに言えば、学校、学校のコース、学校の教師です。現在、学校、コース、および教師は、1 つの ID でそれらのいずれかを参照できるという意味で、「ネストされた」エンティティではありません。このサイトは、各学校のコースと教師を示す「マイクロ サイト」のコレクションです。コースまたは教師は、1 つの学校にのみ存在できます。

/schools/1/courses/10 のような URL があるとします。学校 1 のコース 10。これは問題なく動作します。ユーザーが手動で 10 を 11 に変更したとします。これはたまたま存在しますが、学校 2 のコースです。現在、これは混乱につながります。私のサイトは、ユーザーが学校 1 にいるとまだ「考え」ていますが、コース 3 を一部として表示しています。それ。

要求されている Id と、それが関与する「親」エンティティ (この場合は学校) の両方に対して詳細アクションをパラメトリックにする必要がありますか? IDだけでなく学校の制約でリポジトリからフェッチしますか?

または、これを行うより良い方法はありますか?

4

3 に答える 3

1

私が考える方法は次のとおりです。サービスにコース 11 が存在する場合でも、URI /schools/1/courses/11 に存在するリソースはありません。この URI にはリソースがないため、URI の要求に対して HTTP 404 応答を返します。

サービスを改善する 1 つの方法は、整数の ID 値をエンティティの名前に置き換えることです (これには名前が一意である必要があります)。これにより、URI がよりユーザーフレンドリーになります。例は /schools/Hogwarts/courses/Potions です。

サービスをさらに改善するには、ユーザーがサービスを介して利用可能なさまざまなリソースすべてに移動できるようにする必要があります。たとえば、特定の学校が提供するすべてのコースのリストを取得できるようにしたいと思うでしょう。そのためには、/schools/Hogwarts/courses/ でリソースを公開します。その戻り値の型は、学校が提供するすべてのコースのリストになります。このリストの表現は、次のスニペットのような XML ドキュメントである可能性があります。

<courses>
    <course uri="/schools/hogwarts/courses/defense+against+the+dark+arts">Defense against the dark arts</course>
    <course uri="/schools/hogwarts/courses/potions">Potions</course>
</courses>
于 2011-02-03T17:44:09.387 に答える
1

要求されている Id と、それが関与する「親」エンティティ (この場合は学校) の両方に対して詳細アクションをパラメトリックにする必要がありますか? IDだけでなく学校の制約でリポジトリからフェッチしますか?

はい。

Or is there any better way to do this?

あなたが上で説明したことには何の問題もありません。

于 2011-02-09T15:18:24.947 に答える
-1

キャッチオール ルートを使用して、url 要素を自分で解析することができます。

于 2011-06-19T21:49:21.490 に答える