Sto creando un'API REST per la quale diversi utenti con ruoli diversi avranno accesso alle risorse in esso contenute.
Per semplificare la portata prendiamo il dominio "studente / insegnante / classe":
GET /students
è la risorsa a cui 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. - Tieni tutto ciò che 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 laterale: sto usando l' API Web ASP.NET e Entity Framework 6 , ma non importa davvero per l'implementazione concettuale.