1

私は Web API を設計していますが、それは最も基本的な段階にあります。

システム内のすべてのユーザーは、1 つ以上のロールを持つことができます。(ユーザーと管理者の例)。

API 自体はモジュールとメソッドとして設計されています。たとえば、次のメソッドを持つモジュール User があります。

ユーザー

  • get_friends_of
  • get_profile_pic_url

さて、私のユーザー ロール管理コードでは、これらのメソッドはそれぞれ「権利」です。これらの権利は、1 つまたは複数の役割に割り当てられます。たとえば、2 つの役割は次のようになります。

user_role = ['get_profile_pic_url'] administrator_role = ['get_profile_pic_url','get_friends_of']

したがって、ユーザーがメソッドを呼び出そうとするたびに、そのロールのいずれかがこのメソッドを権利として言及しているかどうかを確認します。はいの場合、呼び出されます。そうでない場合は呼び出されません。

これは、次の場合を除いてバターのように機能します。

通常、ユーザー X には「get_friends_of」を呼び出す権利はありませんが、自分の友達を取得しようとするときはいつでもそのメソッドを呼び出せるようにしたいと考えています。

たとえば、get_friends_of(X) は許可されますが、get_friends_of(y) は拒否されます。

私の質問は、これらのケースを設計に組み込む方法です。

当面の解決策の 1 つは、「get_my_friends」メソッドを導入することですが、API のサイズが大きくなります。さらにドキュメントを作成し、実際には「get_friends_of」の特殊なケースにすぎないことを確認する必要があります。また、ユーザーが友達の友達を見られるようにしたいという意味では拡張できません。

私の API の設計目標の 1 つは、各メソッド呼び出しが相互に排他的であることです。

4

2 に答える 2

0

Userモジュールは2つの異なる方法で使用されているようです。個々のUserエンティティ(get_my_friendsおよびget_profile_pic_urlケース)を表すためと、一般的なユーザー関連のアクセス(ケース)を提供するためget_friends_ofです。これらをおそらくaUserとaUserRepositoryに分離することを検討することをお勧めします。前者は友人とプロフィール写真のURLを持つ現実世界Userを表し、後者はsへの一般的なアクセスを提供しますUser

以下は、あなたが遭遇している概念についての詳細を説明するいくつかのリンクです。

于 2012-05-28T19:44:31.820 に答える