具有两个角色的设计API-患者和医生

时间:2019-02-17 10:08:01

标签: api design-patterns asp.net-core-2.0

我正在为我的项目设计一个新的Web api。

在我的应用中,我有两个角色(患者和医生)。每个用户只能分配一个角色。

每个用户都有自己的个人资料。

患者可以编辑您的个人资料,也可以查看医生的个人资料。 医生也是一样。

api应该是什么样子?

/ api / Patient / pro­文件 GET:视图配置文件的数据

/ api /病人/编辑资料 GET:用于编辑配置文件的数据 PUT:修改个人资料

医生将采用相同的方式。

我想将两个角色的api分开。 对于患者始终:/ api / Patient 对于医生总是:/ api / doctor

当医生想要读取患者数据时会出现问题。

/ api / doctor / pa­tient / profile?u­serId = xxx

这种方法吗?

谢谢

后端:Asp Core 2.1 前端:React JS

2 个答案:

答案 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中实现角色和范围。