Saya sedang membangun API REST di mana beberapa pengguna dengan peran berbeda akan memiliki akses ke sumber daya yang dikandungnya.
Untuk menjaga ruang lingkup tetap sederhana, mari kita ambil domain "siswa / guru / kelas":
GET /students
adalah sumber daya untuk mengakses.
Pengguna mungkin memiliki peran seperti Siswa dan / atau Guru
Siswa hanya akan memiliki akses ke siswa di kelas mereka. Guru akan memiliki akses ke siswa dari kelas yang mereka ajarkan. Beberapa kegunaan mungkin seorang siswa DAN mengajar kelas lain juga. Mereka harus memiliki akses ke siswa di kelas mereka DAN siswa di kelas yang mereka ajar.
Idealnya saya ingin menerapkan ini sebagai dua fungsi - satu per peran dan kemudian "gabungan" jika pengguna memiliki beberapa peran.
Pertanyaan saya adalah: Pola mana yang harus saya gunakan untuk mengimplementasikan ini?
Secara eksternal
- Haruskah saya membagi API saya per peran?
GET /teacher/students
danGET /student/students
itu sepertinya tidak benar bagiku. - Simpan itu saja. Aku satu sumber daya (lebih disukai)
Secara internal
Bagaimana seharusnya diterapkan secara internal?
- Haruskah setiap metode dimulai dengan sakelar BESAR / jika per peran?
- Haruskah saya menerapkan repositori per peran?
- Apakah ada pola desain yang akan membantu saya dalam mencapai ini?
Sebagai komentar sampingan: Saya menggunakan ASP.NET Web API dan Entity Framework 6 , tetapi sebenarnya tidak masalah untuk implementasi konseptual.