URIは不透明です。 HTTPとその背後にあるRESTfulな原理については、http://example.com/countries/{countryId}/cities/{cityId}/sales/{saleId}/article/{articleId}
,とhttp://example.org/
の間に違いはありません。次に、フィネガン・ウェイクのURIエンコードされた内容が続きます。実際には、3つのURIのすべてが同じリソースのURIである可能性があります。おそらく、1つは永続的に別のURIにリダイレクトされています。
これは、ここで最もよく働いているREST以外の懸念事項です。
もしあなたがbeyond practical size limitsに行く危険があるなら、あなたは問題を抱えているでしょう。
もう1つは、多くのURIを含むエンティティは、そのURIが小さい場合は明らかに短くなることです。一般的に大きな懸念事項ではありませんが、URIが本当に大量で、すべてのエンティティがそのようなURIのキロバイトでキロバイトを含んでいる場合、ネットワーク使用に少しの影響があります。
モデリングの有用性はもうひとつです:コーリングコードが記事を望む国を決して気にしないなら、あなたのモデリングはコーリングコードを助けてくれません。
これに関連するのは、RESTのHATEOSの側面を支援する際の相対的リンクの実用性です。article/2
を、販売を説明するエンティティに役立つ相対リンクとして使用することがしばしばありそうな場合、潜在的にハードコードされている)../../
記事を説明するものから販売を説明するエンティティにアクセスするには、これは便利です。問題は、最も便利なリンクを最も便利にすることです。たとえば、国ごとに国よりも他の国に行くのがはるかに一般的な場合は、{countryid}/{cityid}
ではなく、/cities/
が経路に含まれる理由は何ですか?
この相対リンクの問題は、大きなエンティティを引き起こす大きなURIの問題に対抗することができます。エンティティ内のURIの大部分が、エンティティが記述するリソースに「近い」場合、大部分のURIは非常に小さい相対URI 。
もう1つの側面は、これらのIDが人間の読者にやさしいかどうかです。ニューヨークのIDは193
など、NewYork
またはNew%20York
、おそらくはNueva%20York
のようなものですか? RESTの観点では、これらはすべて等しい値ですが、193
は上記の利点を持つURIを短くしますが、他のものは消費する開発者として扱うのが手軽です。
ネスティングはこの人間が判読可能な側面にも影響します。一方で、多くのネスティングでは、その中の各要素を識別することができますが、他の要素では、パス内にセクションが多すぎると混乱することがあります。ほとんどの場合、分割が分かりやすい場合、人間の読者はURIの大部分を除外し、気になる部分に集中することができます。
すべての唯一のハード制限は、実用的なURIサイズ制限のものであり、それを超えると、あなたのデザインのトレードオフを考慮する賛否両論ほど厳しい規則はありません。
お返事ありがとうございます – ru51an