Sto costruendo un'API REST per la quale diversi utenti con ruoli diversi avranno accesso alle risorse che contiene.
Per mantenere l'ambito semplice, prendiamo il dominio "studente / insegnante / classe":
GET /students
è la risorsa per accedere.
Gli utenti potrebbero avere ruoli come Studente e / o Insegnante
Gli studenti avranno accesso solo agli studenti delle loro classi. Gli insegnanti avranno accesso agli studenti delle classi che insegnano. Alcuni usi possono essere uno studente E insegnare anche altre classi. Devono avere accesso agli studenti delle loro classi E agli studenti delle classi che insegnano.
Idealmente voglio implementarlo come due funzioni: una per ruolo e poi "unione" se un utente ha più ruoli.
La mia domanda è: quale modello dovrei usare per implementarlo?
Esternamente
- Devo dividere la mia API per ruolo?
GET /teacher/students
eGET /student/students
Non mi sembra giusto. - Mantieni tutto sono una risorsa (preferita)
Internamente
Come dovrebbe essere implementato internamente?
- Ogni metodo dovrebbe iniziare con un interruttore BIG / se per ruolo?
- Devo implementare un repository per ruolo?
- Esiste un modello di progettazione che mi aiuterà a raggiungere questo obiettivo?
Come commento a parte: sto usando API Web ASP.NET e Entity Framework 6 , ma in realtà non ha importanza per l'implementazione concettuale.