Je construis une API REST pour laquelle plusieurs utilisateurs avec des rôles différents auront accès aux ressources qu'elle contient.
Pour garder la portée simple prenons le domaine "étudiant / enseignant / classe":
GET /students
est la ressource à laquelle accéder.
Les utilisateurs peuvent avoir des rôles comme étudiant et / ou enseignant
Les étudiants n'auront accès qu'aux étudiants de leurs classes. Les enseignants auront accès aux étudiants des classes qu'ils enseignent. Certaines utilisations peuvent être étudiantes ET enseigner d'autres classes aussi. Ils doivent avoir accès aux étudiants de leurs classes ET aux étudiants des classes qu'ils enseignent.
Idéalement, je veux implémenter cela comme deux fonctions - une par rôle et ensuite "union" si un utilisateur a plusieurs rôles.
Ma question est: quel modèle dois-je utiliser pour l'implémenter?
Extérieurement
- Dois-je diviser mon API par rôle?
GET /teacher/students
etGET /student/students
cela ne me semble pas juste. - Gardez tout ce que je suis une ressource (préféré)
Intérieurement
Comment doit-il être mis en œuvre en interne?
- Chaque méthode doit-elle commencer par un GRAND commutateur / si par rôle?
- Dois-je implémenter un référentiel par rôle?
- Existe-t-il un modèle de conception qui m'aidera à y parvenir?
En guise de commentaire secondaire: j'utilise l' API Web ASP.NET et Entity Framework 6 , mais cela n'a pas vraiment d'importance pour l'implémentation conceptuelle.