Estoy creando una API REST para la cual varios usuarios con diferentes roles tendrán acceso a los recursos que contiene.
Para mantener el alcance simple, tomemos el dominio "alumno / profesor / clase":
GET /students
es el recurso para acceder.
Los usuarios pueden tener roles como Estudiante y / o Profesor
Los estudiantes solo tendrán acceso a los estudiantes de sus clases. Los maestros tendrán acceso a los estudiantes de las clases que imparten. Algunos usos pueden ser estudiantes Y enseñar otras clases también. Deben tener acceso a los alumnos de sus clases Y a los alumnos de las clases que imparten.
Idealmente, quiero implementar esto como dos funciones: una por rol y luego "unión" si un usuario tiene múltiples roles.
Mi pregunta es: ¿Qué patrón debo usar para implementar esto?
Externamente
- ¿Debería dividir mi API por rol?
GET /teacher/students
yGET /student/students
no me parece bien - Mantenlo todo, soy un recurso (preferido)
Internamente
¿Cómo debe implementarse internamente?
- ¿Debería comenzar cada método con un interruptor GRANDE / si es por función?
- ¿Debo implementar un repositorio por rol?
- ¿Existe un patrón de diseño que me ayudará a lograr esto?
Como comentario adicional: estoy usando ASP.NET Web API y Entity Framework 6 , pero realmente no importa para la implementación conceptual.