如果请求它的用户不能查看所有数据,那么在RESTful响应中排除某些字段/数据的最佳做法是什么?
例:
人有名字,姓氏和出生日期.
经过身份验证和未经身份验证的用户都可以向/people.xml发出RESTful请求以获取完整的人员列表.但是,只有经过身份验证的用户才能查看所有信息.未经身份验证的用户应仅返回名字和姓氏字段(不包括出生日期数据).
Person控制器是否应该在构建响应之前检查身份验证?如果用户通过身份验证,他们会获得所有内容,否则他们只获得一个子集 这会破坏REST的任何规则,其中/people.xml可以发送两个单独的结果吗?
我正在构建相当复杂的REST API.整个API受身份验证保护.Person系统中的任何人都应该可以访问某些资源(例如,比方说),但是我想"隐藏"特定用户角色的某些字段.
假设Person资源有以下字段:
FirstName
LastName
BirthDate
Address
Run Code Online (Sandbox Code Playgroud)
我想他们都对用户可见与HRManager角色,隐藏Address了JuniorHRManager,留下FirstName+ LastName其他人.
这种RESTful方法是根据应用于登录用户的角色的规则从响应中删除字段吗? 这是最简单的实现我猜(因为我使用的是一个具有全局响应过滤器的优秀ServiceStack ),但我不确定这是否会破坏REST规则?
我到目前为止唯一想到的另一种方法是创建特定于角色的资源(比如PersonForHRManager等).但是,这将是荒谬的,因为系统应该具有角色的可见和隐藏字段的各种组合.