課題

例えば、管理者(Administrator)、編集者(Editor)、一般利用者(User) がそれぞれログイン後の専用ページで books というリソースを扱いたい場合、どのような URL を提供すべきですか?

前提条件

  • 管理者かつ編集者の人もおり、それぞれ全く別のUIを提供するのでページの共通化は不可
  • 各ユーザー種別ごとにマイクロサービス化等はせず、単一のアプリケーションで実装する

現状案

1つの案は

administrators/books
editors/books
users/books

のようにユーザー種別の複数形を用いるパターンですが、リソース名を含めてしまうと URL からはリソースの関係がネストしているように見えてしまう気がします。

あるいは

administrator/books
editor/books
user/books

のようにリソースの単数形を用いるパターンも考えましたが、この場合に素直に Controller を作ると User::BooksController のように、名前空間のモジュール名とModelクラス名が衝突してしまう問題があります。

もう1つの案は

administrator_page/books
editor_page/books
user_page/books

のように素直に誰向けのページかを URL で語るパターンですが、あまり見栄えが良くないように感じますし、こういった URL を提供しているサービスを思い付きません。

以上、よろしくお願いいたします。