Tôi đang xây dựng API REST mà một số người dùng có vai trò khác nhau sẽ có quyền truy cập vào tài nguyên mà nó chứa.
Để giữ cho phạm vi đơn giản, hãy lấy miền "học sinh / giáo viên / lớp":
GET /students
là tài nguyên để truy cập.
Người dùng có thể có các vai trò như Học sinh và / hoặc Giáo viên
Học sinh sẽ chỉ có quyền truy cập vào các sinh viên của lớp học của họ. Giáo viên sẽ có quyền truy cập vào các sinh viên của các lớp học họ dạy. Một số sử dụng có thể là một học sinh VÀ cũng dạy các lớp khác. Họ phải có quyền truy cập vào các sinh viên của lớp VÀ sinh viên của các lớp họ dạy.
Lý tưởng nhất là tôi muốn thực hiện điều này như hai chức năng - một chức năng cho mỗi vai trò và sau đó "hợp nhất" nếu người dùng có nhiều vai trò.
Câu hỏi của tôi là: Tôi nên sử dụng mẫu nào để thực hiện điều này?
Bên ngoài
- Tôi có nên tách API của mình cho mỗi vai trò không?
GET /teacher/students
vàGET /student/students
nó dường như không đúng với tôi. - Giữ cho tất cả tôi là một tài nguyên (ưu tiên)
Nội bộ
Làm thế nào nó nên được thực hiện trong nội bộ?
- Mọi phương pháp có nên bắt đầu bằng một công tắc LỚN / nếu mỗi vai trò không?
- Tôi có nên thực hiện một kho lưu trữ cho mỗi vai trò?
- Có một mẫu thiết kế sẽ giúp tôi đạt được điều này?
Như một nhận xét phụ: Tôi đang sử dụng ASP.NET Web API và Entity Framework 6 , nhưng nó thực sự không quan trọng đối với việc triển khai khái niệm.