0

我目前正在设计一项服务。它是一种多层服务,使用 REST 接口存储来自多个客户端的数据。

我不清楚我应该如何接受 URI 中的资源 ID。假设用户001创建了一个资源,第一个资源是给他的,而第 100 个资源是给系统的。

/resource/1当用户 001 对( )进行 GET 时,我应该返回什么/resource/{id}。我是否应该显示他的记录,从而使 URI 相对于执行请求的用户?或者我应该为系统返回第一个(拒绝它,因为它缺少查看它的权限)?

我不想深入了解授权内容,但我想知道我应该如何处理这种情况。如果我更喜欢后者,那么我怎样才能让用户说“好的,给我我创建的第一个资源”或“给我第二个……”,“给我最后一个……”,“给我第 100 个我创建的资源”?

4

1 回答 1

0

我不声称自己是 REST 专家,但我可能会这样做。

在您的域模型中,如果没有用户就无法存在资源,那么对 URL 调用进行建模是完全可以的,例如

GET /user/{userId}/resource  //Gets all resources of a user

另一方面,如果资源可以在没有用户的情况下存在,那么 stackoverflow 上的这个链接提供了一种对此类调用进行建模的好方法。

RESTful 多对多可能吗?

我们为我们的一个项目做的另一件事是,我们有链接表(UserResource table(id,userId,resourceId),我们有一个唯一的 ID 并且有类似的东西

GET /userResource/{userResourceId}



 GET /userResource               //Retrieve all the resources user has access to

如果您关心安全性,StackOverflow 上有关于如何将安全性与 Rest 调用集成的链接。理想情况下,此类逻辑应在服务器端处理。您通常不希望将该逻辑放入 REST url。

例如,如果你接到一个电话

GET /resource  //Get all resources

根据用户是谁,您只返回他有权访问的资源子集。

底线:不要围绕权限构建资源。

再说一次,我不是专家。只是我的拙见。:-)

于 2012-10-26T19:50:38.417 回答