3

アイテムを含むサイトを構築しています。各アイテムにはページがあります。次に例を示します。

website.com/book/123
website.com/film/456
website.com/game/789

各アイテムには複数のサブ (およびサブサブ、サブサブサブ) ページを含めることができます。たとえば、本には宣伝文句があり、映画にはギャラリーがあり、ゲームにもギャラリーがあります。

私の質問は、アイテムに関連付けられたページの URL の構造化に関して、何らかの標準またはベスト プラクティスが存在するかどうかです。例えば:

website.com/film/456/gallery

サブページがアイテムの後に来る場所、または:

website.com/film/gallery/456/

item は URL の最後の部分です。

どのアプローチが最適なのか、または Web 標準が存在するかどうかについて、誰かが情報を持っていますか? 当然のことのようですが、決めるのに苦労しています。各アプローチの長所と短所を考えることができます-次のユーザーパスがURLと一致することを意味するため、前者のオプションに傾いています:

website.com をロード -> 「映画」をクリック (website.com/films) -> 「映画」をクリック (website.com/film/123) -> ギャラリーをクリック (website.com/film/123/gallery)

しかし、それについての何かが... オフで、一貫性がないように思われます。

4

1 に答える 1

5

以前のURLの方が「優れて」おり、より広く展開されているのは正しいことです。私はあなたがこれをどんな標準でも文書化するのを見つけるとは思わない; それはむしろ慣習です。RESTを扱っているほとんどの記事や本は、そのようにしています。

この理由は、あなたが言うように、URLのパスコンポーネントがリソースとサブリソースの構造と一致するためです。特に、次のすべてが有効なURLである必要があります。

  • website.com/
  • website.com/books
  • website.com/books/123

books/123特に、あなたが持っているようなものではない ことに注意してbook/123ください。私は単数形を見たことがありますが、私見では複数形の方が優れています。

URLの場合/books

  • GETはすべての本を取得しますが、クエリパラメータを使用して本を制限できます。/books?author=alice
  • POSTは、新しい本を追加します(サーバーで生成されたIDを使用)。

URLの場合/books/123

  • GETはその特定の本を取得します
  • PUTは、本をそのIDに置き換えます(または、クライアントが生成したIDの本を追加します)

ここで、本に宣伝文があり、宣伝文が特定の本にのみ固有である場合は、次のURLを追加します。

  • website.com/books/123/blurbs
  • website.com/books/123/blurbs/72

各ギャラリーが1つの映画に属していれば、映画やギャラリーでも同じことができます。ただし、複数の映画のギャラリーが存在する場合は/galleries、トップレベルのURLを作成します。映画からギャラリーへの移動はまだ問題ありません。構造化されたURLはありません。代わりに、GETを介してフィルム456の写真を含むすべてのギャラリーを取得します。

  • website.com/galleries?film=456

一般的なルールとして、サブリソースの所有権関係がある場合は構造化URLを使用できますが、トップレベルアイテム間の関係が緩い場合は、クエリパラメーターで問題ありません。RESTfulURLにはクエリパラメータがないという一般的な誤解に陥らないでください。彼らはそうします。:)

最後に、あなたの質問に直接答えるには、あまり役に立たないwebsite.com/films/galleries/456ので、良いURLIMHOではありません。`website.com/films/galleries/実際、それはかなり醜いと思います。それはどういう意味ですか?すべてのギャラリー?もしそうなら、それはする必要がありますwebsite.com/galleries

繰り返しになりますが、これはどこでも標準化されているとは思いませんが、非常に一般的で慣習的な感じがします。

于 2011-10-15T03:32:36.890 に答える