Rest API返回基于角色或不同实体的属性

时间:2017-05-27 19:44:03

标签: c# rest api 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?

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

谢谢!

1 个答案:

答案 0 :(得分:1)

希望你在提出这个问题后取得了进展。

我将重新阐述this SO answer中的陈述: 完全在REST的范围内,基于以下约束返回相同资源的不同表示: 接受标题:(例如,不同的格式,如application / json或application / xml) 授权:即基于呼叫者“被授权”看到的内容。

REST的唯一要求是资源的URI必须相同。所以,考虑一下: / api / User / 1作为ID为1的User资源的URI:每个REST完全没问题

鉴于:

/ API /用户/ 1 /私有

/ API /用户/ 1 /公共

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