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

C# Rest API返回基于角色或不同实体的属性,c#,rest,api,asp.net-web-api,asp.net-core,C#,Rest,Api,Asp.net Web Api,Asp.net Core,我很好奇,当构建一个适当的restful资源时,基于用户角色返回资源的最佳操作是什么 比如说,, 如果用户1调用,则获取:api/Users/1 该用户应获得基本用户对象(名字、姓氏、电子邮件)以及SSN等专有信息。 但如果用户2调用,则获取:api/Users/1 该用户应该获得基本用户对象,可能还有他们共享的共同朋友 这是restful资源中提倡的,还是更容易将这些关注点划分为更具体的内容,如api/Users/1/sensitive和api/Users/1/Friends 如果前者是可以接

我很好奇,当构建一个适当的restful资源时,基于用户角色返回资源的最佳操作是什么

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

这是restful资源中提倡的,还是更容易将这些关注点划分为更具体的内容,如api/Users/1/sensitive和api/Users/1/Friends

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


谢谢

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

我将重新措辞在下列文件中所作的发言: 在REST的范围内,完全可以基于以下约束返回同一资源的不同表示: Accept标头:(例如,不同的格式,如application/json或application/xml) 授权:即基于呼叫方“授权”查看的内容

REST的唯一要求是资源的URI必须相同。因此,考虑一下: /api/User/1作为ID为1的用户资源的URI:每个REST都非常好

鉴于:

/api/用户/1/专用

/api/User/1/public


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

您可以使用API调用的身份验证来决定要共享哪些信息以及与谁共享。HTTP基本身份验证@Riya每个可以与我的API通信的人都经过身份验证。然后,我可以检查调用API的调用方是否是被请求的用户。在这一点上,最好返回一个完全不同的对象(如果它们不是用户)还是只隐藏特定属性?如果回答了您的问题,请返回具有较少/不同属性的相同对象。