Rest API 根据角色或不同实体返回属性

Mat*_*rtz 6 c# api rest asp.net-web-api asp.net-core

我很好奇在构建适当的静态资源时,根据用户的角色返回资源的最佳操作是什么。

例如,如果用户 1 调用,则 GET:api/Users/1 该用户应获取基本用户对象(名字、姓氏、电子邮件)以及 SSN 等专有信息。但是,如果用户 2 调用,GET:api/Users/1 该用户应该获取基本用户对象以及他们共享的共同朋友。

这是在宁静的资源中提倡的,还是更容易将这些问题分成更具体的内容,例如 api/Users/1/sensitive 和 api/Users/1/Friends?

如果前者可以接受,那么这是否可以通过继承来管理?

谢谢!

Sud*_*hra 5

希望自从你提出这个问题以来你已经取得了进步。

我将重新表述此 SO 答案中的声明:完全在 REST 的范围内根据约束返回同一资源的不同表示形式,例如:接受标头:(例如不同的格式,如 application/json 或 application/xml)授权:即基于调用者“授权”查看的内容。

REST 的唯一要求是资源的 URI 必须相同。因此,考虑: /api/User/1 作为 ID 为 1 的用户资源的 URI:根据 REST 完全没问题

然而:

/api/用户/1/私有

/api/用户/1/公共

不是 RESTful,因为它为同一资源提供两个 URI。