Estou criando uma API REST para a qual vários usuários com funções diferentes terão acesso aos recursos que ela contém.
Para manter o escopo simples, vamos usar o domínio "aluno / professor / turma":
GET /students
é o recurso a acessar.
Os usuários podem ter funções como Aluno e / ou Professor
Os alunos terão acesso apenas aos alunos de suas aulas. Os professores terão acesso aos alunos das aulas que ministram. Alguns usos podem ser um aluno E dar outras aulas também. Eles devem ter acesso aos alunos de suas turmas E aos alunos das turmas que ministram.
Idealmente, quero implementar isso como duas funções - uma por função e, em seguida, "união" se um usuário tiver várias funções.
Minha pergunta é: Qual padrão devo usar para implementar isso?
Externamente
- Devo dividir minha API por função?
GET /teacher/students
eGET /student/students
isso não parece certo para mim. - Mantenha tudo que eu sou um recurso (preferencial)
Internamente
Como deve ser implementado internamente?
- Todo método deve começar com um switch BIG / se por função?
- Devo implementar um repositório por função?
- Existe um padrão de design que me ajudará a conseguir isso?
Como um comentário secundário: estou usando a API Web do ASP.NET e o Entity Framework 6 , mas isso realmente não importa para a implementação conceitual.