我正在为我的项目设计一个新的Web api。
在我的应用中,我有两个角色(患者和医生)。每个用户只能分配一个角色。
每个用户都有自己的个人资料。
患者可以编辑您的个人资料,也可以查看医生的个人资料。 医生也是一样。
api应该是什么样子?
/ api / Patient / pro文件 GET:视图配置文件的数据
/ api /病人/编辑资料 GET:用于编辑配置文件的数据 PUT:修改个人资料
医生将采用相同的方式。
我想将两个角色的api分开。 对于患者始终:/ api / Patient 对于医生总是:/ api / doctor
当医生想要读取患者数据时会出现问题。
/ api / doctor / patient / profile?userId = xxx
这种方法吗?
谢谢
后端:Asp Core 2.1 前端:React JS
答案 0 :(得分:1)
此问题是主观的,因为没有一种“正确”的方法可以做到,而且每个人都会有不同的意见。但是,有一些最佳实践可以遵循,并且根据给定的信息,这就是我将如何为您的API进行URI设计的方法。
患者
/api/patients/{id}
/api/patients/{id}/profiles
医生
/api/doctors/{id}
/api/doctors/{id}/profiles
/api/doctors/{id}/patients
/api/doctors/{id}/patients/{patientid}/profiles
OAuth 2.0 + OpenID应使用声明和范围来处理访问这些资源的授权。
以下是一些URI最佳做法的链接-https://blog.restcase.com/7-rules-for-rest-api-uri-design/
答案 1 :(得分:0)
在对API的用户进行身份验证时,看看如何使用用户角色。 OAuth 2.0令牌将是一个不错的选择,并将作用域应用于每个角色。
某人注册为患者时,与某人注册为医生时相比,他们可以访问某些数据和端点。使用用户凭据授予来颁发访问令牌,然后在用户实际请求内容时检查范围。
您甚至可以使用各种级别的Doctor权限,如果有人正在为美国的医生建立此权限,则可以用来帮助实现HIPAA法规遵从性。这样,您可以显示一定水平的详细患者信息,而无需暴露一些医疗信息。
播客,解释API中的OAuth:http://fullstackradio.com/episodes/4/
stackoverlow和stackexchange的安全性部分也有很多问题和答案,涉及如何使用OAuth在API中实现角色和范围。