Ich erstelle eine REST-API, für die mehrere Benutzer mit unterschiedlichen Rollen Zugriff auf die darin enthaltenen Ressourcen haben.
Um den Umfang einfach zu halten, nehmen wir die Domain "Schüler / Lehrer / Klasse":
GET /students
ist die Ressource, auf die zugegriffen werden soll.
Benutzer haben möglicherweise Rollen wie Schüler und / oder Lehrer
Die Schüler haben nur Zugang zu den Schülern ihrer Klassen. Die Lehrer haben Zugang zu den Schülern der Klassen, die sie unterrichten. Einige Anwendungen können ein Schüler sein UND auch andere Klassen unterrichten. Sie müssen Zugang zu den Schülern ihrer Klassen UND den Schülern der Klassen haben, die sie unterrichten.
Idealerweise möchte ich dies als zwei Funktionen implementieren - eine pro Rolle und dann "Vereinigung", wenn ein Benutzer mehrere Rollen hat.
Meine Frage ist: Welches Muster soll ich verwenden, um dies zu implementieren?
Äußerlich
- Sollte ich meine API nach Rollen aufteilen?
GET /teacher/students
undGET /student/students
es scheint mir nicht richtig zu sein. - Behalte alles, ich bin eine Ressource (bevorzugt)
Im Inneren
Wie soll es intern implementiert werden?
- Sollte jede Methode mit einem BIG-Schalter beginnen / wenn pro Rolle?
- Sollte ich ein Repository pro Rolle implementieren?
- Gibt es ein Designmuster, das mir dabei hilft?
Nebenbei bemerkt : Ich verwende ASP.NET-Web-API und Entity Framework 6 , aber die konzeptionelle Implementierung spielt keine Rolle.