異なるロールを持つ複数のユーザーが含まれるリソースにアクセスできるREST APIを構築しています。
スコープをシンプルに保つために、「student / teacher / class」ドメインを取り上げます。
GET /students
アクセスするリソースです。
ユーザーには、学生や教師などの役割がある場合があります
生徒はクラスの生徒にのみアクセスできます。教師は、教えるクラスの生徒にアクセスできます。いくつかの用途は学生であり、他のクラスも教えます。彼らは彼らのクラスの生徒と彼らが教えるクラスの生徒にアクセスできなければなりません。
理想的には、これを2つの機能として実装します。ロールごとに1つ、ユーザーが複数のロールを持つ場合は「結合」します。
私の質問は、これを実装するためにどのパターンを使用すればよいですか?
外部的に
- ロールごとにAPIを分割する必要がありますか?
GET /teacher/students
そしてGET /student/students
それは右の私には思われません。 - すべてを維持する私は1つのリソースです(推奨)
内部的に
内部的にどのように実装する必要がありますか?
- すべての方法は、BIGスイッチで開始する必要がありますか、役割ごとに行う必要がありますか
- 役割ごとにリポジトリを実装する必要がありますか?
- これを達成するのに役立つ設計パターンはありますか?
副次的なコメントとして:私はASP.NET Web APIとEntity Framework 6を使用していますが、概念的な実装には関係ありません。